0

あるテーブルから別のテーブルにデータを移行したいのですが、テーブル名が異なる2つのテーブルに加えて、スキーマも異なります。

たとえば、既存のテーブルは次のとおりです。

@Entity
public class Address {
     private String uuid;
     private String street;
     private String postcode;
}

@Entity
public class User {
     private String uuid;
     private String name;
     @One2One
     private Address address;
}

要件が変更された後、2 つのクラスを次のようにリファクタリングします。

@Entity
public class UserChanged {
     private String uuid;
     private String name;
     @Embedded
     @AttributeOverrides(.....)
     private Address address;
}
@Embeddable 
public class AddressChanged {
     private String street;
     private String postcode;
}

つまり、新しいテーブルには「UserChanged」というテーブルが 1 つだけあり、すべての列に uuid、名前、番地、郵便番号などのユーザー情報が含まれています。ただし、既存の場合、「ユーザー」と「アドレス」の2つのテーブルがあり、「ユーザー」テーブルには、主キーを使用してテーブル「アドレス」を参照する外部キー「アドレス」があります。

Address
------------------
uuid          varchar (primary key)
street        varchar
postcode      varchar


User
------------------
uuid          varchar (primary key)
name          varchar
address_id    varchar (foreign key)


UserChanged
------------------
uuid          varchar (primary key)
name          varchar
street        varchar
postcode      varchar

したがって、「User」テーブルと「Address」テーブルのすべてのデータ情報を「UserChanged」テーブル、つまり User + Address -> UserChanged に移行する必要があります。

この移行要件のために作成する必要がある SQL スクリプトは誰でも教えてくれます。

4

1 に答える 1

0
insert into UserChanged (uuid, name, street, postcode) select a.uuid, u.name, a.street, a.postcode from address a, user u where a.uuid = u.address_id
于 2012-08-15T02:17:52.037 に答える