Oracle同步字符串列

时间:2016-07-07 12:58:39

标签: oracle join insert bulkinsert

我有两个地址表,如:A1,街道,城市,建筑和其他一个A2,这三列和其他。表格没有相同的结构,A1没有主键,因为不在我的数据库中,所以我无法添加一个。

所以,我想插入A1中不在A2中的所有数据,比较STREET,CITY和BUILDING列。

我怎么能这样做,因为在oracle中字符串列的比较非常慢。我注意到我有很多数据。 我可以用批处理和bulkinsert以某种方式做到这一点吗?

谢谢

1 个答案:

答案 0 :(得分:0)

更新:尝试合并,基本上做同样的事情。另请参阅是否可以在连接条件中的列上创建索引,这将提高性能。

MERGE INTO A2
    USING A1
    ON (a1.street=a2.street and a1.city=a2.city and a1.building=a2.building)
  WHEN NOT MATCHED THEN
    INSERT (Street,City,Building)
    VALUES (a1.Street,a1.City,a1.Building);

一个:

 insert into A2 (Street,City,Building)
 select a1.Street,a1.City,a1.Building 
 from a1 left join a2 
 on a1.street=a2.street and a1.city=a2.city and a1.building=a2.building
 where a2.street is null and a2.city is null and a2.building is null