从远程oracle上导入到本地同一张表中不存在的记录的方法
2014-07-10 19:35
387 查看
场景:在远程oracle上存在一张表A,在本地同样存在一张相同表结构的表B。由于本地表B中保存了业务系统操作产生的几条记录,同时原来导入了A中的部分记录,但是并没有保存A中全部的记录。A中有15条记录,B中保存了A中3条记录同时B中还有本地业务系统产生的4条记录,不能删除B中的业务系统产生的4条记录。现在想将A中的另外的12条记录导入B中,同时有能保留B中原来的由业务系统产生的4条记录。
解决sql:
1、先在A中获得在B中出现过的记录。
select * from A@dblink_name a where exists
(select * from B b wherer b.colume1=a.colume1 and b.colume2=a.colume2 and b.colume3=a.colume3)
2、获得A中在B中没有出现过的记录 exists替换为not exists;
3、将没有在B中出现过的记录插入A中
insert into B
select * from A@dblink_name a where not exists
(select * from B b wherer b.colume1=a.colume1 and b.colume2=a.colume2 and b.colume3=a.colume3);
注:使用此方法导入数据可以避免导入重复记录的数据(表中不存在主键约束的情况下)。如果表中存在关于某个字段的主键约束的情况下,如果不按照区分不存在数据的方法导入的话是违反主键约束的。
解决sql:
1、先在A中获得在B中出现过的记录。
select * from A@dblink_name a where exists
(select * from B b wherer b.colume1=a.colume1 and b.colume2=a.colume2 and b.colume3=a.colume3)
2、获得A中在B中没有出现过的记录 exists替换为not exists;
3、将没有在B中出现过的记录插入A中
insert into B
select * from A@dblink_name a where not exists
(select * from B b wherer b.colume1=a.colume1 and b.colume2=a.colume2 and b.colume3=a.colume3);
注:使用此方法导入数据可以避免导入重复记录的数据(表中不存在主键约束的情况下)。如果表中存在关于某个字段的主键约束的情况下,如果不按照区分不存在数据的方法导入的话是违反主键约束的。
相关文章推荐
- Sql2012如何将远程服务器数据库及表、表结构、表数据导入本地数据库 自定义日志记录功能,按日记录,很方便 C#常量和字段以及各种方法的语法总结 类型,对象,线程栈,托管堆在运行时的关系,以及clr如何调用静态方法,实例方法,和虚方法 asp.net webapi 自定义身份验证
- oracle 在本地查询远程数据库的方法,如何组合远程链接字符串
- oracle 本地使用命令导入数据到远程主机
- cmd 导出导入oracle远程、本地数据库
- oracle数据导入导出(本地/远程)
- 将oracle远程数据库导出导入到本地
- LInux Oracle本地可以连接远程无法访问解决方法-启动实例-开启监听
- LInux Oracle本地可以连接远程无法访问解决方法
- Oracle数据泵远程导入文件到本地数据库
- Oracle数据泵远程导入文件到本地数据库
- 将oracle远程数据库导出导入到本地
- c#配合oracle快速导入excel方法--原创(6万条记录5分钟左右)
- 从服务器将ORACLE数据导入到本地的方法
- oracle 远程导入导出(本地win)
- windows下oracle的本地、远程导入导出
- cmd 导出导入oracle远程、本地数据库
- plsql连接本地oracle数据库,而远程主机却无法连接,出现无监听程序的解决方法
- oracle数据导入导出(本地/远程)
- oracle备份文件导入到SQL中实用的方法(上)
- Oracle中导入文本数据的方法