2012-08-15 35 views
0

我想将数据从一个表迁移到另一个表,除了具有不同表名的两个表之外,它们也具有不同的架构。对于Java EE应用程序,具有不同架构的两个表之间的数据迁移

例如,现有的表是:

@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; 
} 

要求改变之后,我们重构两个类是这样的:

@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”,我们有所有的列包含用户信息,如uuid,名称,街道和邮政编码。然而,对于现有的,我们有两个表格,分别是“用户”和“地址”,在“用户”表格中有一个外键“地址”,它使用主键引用表格“地址”。

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 

所以我想要做的就是迁移所有数据信息的“用户”和“地址”表只是一表“UserChanged”,即用户+地址 - > UserChanged。

任何人都可以告诉我我为这个迁移需求写的sql脚本。

回答

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 
相关问题