我使用的 insert into 更新表中查询到的数据
使用的 DBLINK 查询源数据表
INSERT INTO tb_demo SELECT * FROM [email protected] where iyear=2011 and imonth=8 and flag=0
考虑到更新后, 表中最大的 SEQUENCE 可能重复的问题, 编辑了各表的 SEQUENCE值。
如果必须使用自身数据库的 SEQUENCE 值, 可考虑增加辅助字段。 OLDID 记录原始的主键值。
关联表 UPDATE SIM_TRAING_SIM M set SUITE_ID = (SELECT S.ID FROM SUITE S WHERE S.OLDID=M.SUITE_ID) WHERE M.AC_TYPE_CODE=14 AND ...........
实际测试通过的SQL:
CREATE table wu_t_suite as select SEQ_SIM_BIG_SUITE.NEXTVAL BIG_SUITE_ID, T.BIG_SUITE_ID BIG_SUITE_ID_LK, T.BIG_SUITE_NO, T.AC_TYPE_CODE, T.FIXED_YEAR from sim_big_suite@DBLINK_CRS_234 T WHERE T.BIG_SUITE_ID BETWEEN 1415 AND 1420 CREATE table wu_t_simsuite as select SEQ_SIM_OPERATE_LOG.NEXTVAL SUITE_ID, T.BIG_SUITE_ID, T.SUITE_NO, T.AC_TYPE_CODE, T.FIXED_YEAR from sim_suite@DBLINK_CRS_234 T WHERE T.BIG_SUITE_ID BETWEEN 1415 AND 1420 UPDATE wu_t_simsuite t SET t.big_suite_id = (SELECT b.big_suite_id FROM wu_t_suite b WHERE b.big_suite_id_lk = t.big_suite_id)
http://blog.sina.com.cn/s/blog_6239341c0100j9zv.html
sqlldr 可以导入数据量比较大的CSV文件,比PLSQL的TEXTIMPORT效率高很多。
实测92118330条数据约半小时。
ldr_object.ctl控制文件:
load data infile "F:\2017platstatic\data.csv" truncate into table PAX_TICKET_TEMP fields terminated by "," optionally enclosed by ' ' TRAILING NULLCOLS (TICKET_NO, PAX_ID_NO, PAX_ID_TYPE, created "to_date(:created,'yyyy-mm-dd hh24:mi:ss')", status "trim(:status)" )
命令格式:
sqlldr 用户名/密码@//172.**.***.***:端口/服务名 control=D:\oracleexp\sqlldr\ldr_object.ctl bad=D:\oracleexp\sqlldr\ldr_object2.bad log=D:\oracleexp\sqlldr\ldr_object2.log skip=0 errors=9999 rows=5000 bindsize=20971520 readsize=20971520
参考连接:
https://www.cnblogs.com/jyzhao/p/4819884.html