在 Oracle 数据库中,我们通常在不同数据库的表间记录进行复制或迁移时会用以下几种方法:
1. 逐条insert -- 只适用少量数据更新
2. 建立数据库间的 dblink
3. exp A表(可加查询条件),再imp到B表
Oracle中用exp/imp命令参数详解
exp test/test@ip:1521/ORCL file=D:360Downloads est.dmp tables=(BMB,HCK_1018,ZC_CGDD_1018)
imp test/test@ip:1521/ORCL file=D:360Downloads est.dmp tables=(HCK_1018,ZC_CGDD_1018) ignore=y
4. 程序分批执行
select from A ..
insert into B ...
5. Sql Loader(sqlldr / sqluldr2)
实例:
1) 数据文件+建表
2) ctl文件-
sqluldr2自动生成的ctl文件
3) 执行
导出:
D:oraclesqluldr2>sqluldr264 scott/s123 query="select * from qmcb_ls_100" table=qmcb_ls_100 head=yes file=d:oraclesqluldr2qmcb_ls_100.csv
D:oraclesqluldr2>sqluldr264 scott/s123@xxx:1521/xxx sql=d:oraclesqluldr2qmcb_ls.sql table=qmcb_ls head=yes file=d:oraclesqluldr2qmcb_ls.csv
导入:
C:Usersepsoft>sqlldr userid=scott/s123 control=d:oraclesqluldr2qmcb_ls_100.ctl data=d:oraclesqluldr2qmcb_ls_100.csv direct=true parallel=true
sqlldr dbuser/dbpass@dbservice control=users.ctl
当加载大量数据时(大约超过10GB),最好抑制日志的产生, 这样不产生REDO LOG,可以提高效率。
SQL>ALTER TABLE RESULTXT nologging;
然后在 CONTROL 文件中 load data 上面加一行:unrecoverable,此选项必须要与DIRECT共同应用。
parallel并不是让一个sqlldr语句起多个进程来加载数据,而是不锁住加载表,允许别的直接路径加载. 所以要使parallel起作用,应该先将要加载的数据文件分成多个,用多个sqlldr语句同时加载,如下例:
并行
sqlldr userid=/ control=result1.ctl direct=true parallel=true
sqlldr userid=/ control=result2.ctl direct=true parallel=true
参考资料:
Oracle SqlLoader使用
sqluldr2的使用及常见异常处理
sqluldr2 学习心得
sqlldr官方文档
sqluldr2官方文档
Oracle Sql Loader的学习使用
load data infile
python3脚本使用sql loader批量导入字节文件并二次处理
https://www.cnblogs.com/lideng/p/3739380.html
参数说明

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/58368.html