关于 Oracle 的数据导入导出及 Sql Loader (sqlldr)

我使用的  insert into 更新表中查询到的数据

 

使用的 DBLINK 查询源数据表

 

INSERT INTO tb_demo SELECT * FROM tb_demo@DDD.REGRESS.RDBMS.DEV.US.ORACLE.COM 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

 

 



 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值