参考:http://blog.csdn.net/chenrizhong/article/details/7049975
需求:
ORACLE从一个库中的多表查询的数据导入到另一个库中的一张表
实现:
由于数据量不少,将数据导出到文件,然后使用SQLLDR导入。
遇到问题及解决:
1、sqlldr是可以字段间是空的,但在使用时,记得在控制文件中增加TRAILING NULLCOLS
2、中文字符集问题:
在导入的时候,中文字符集导致报错:ora-12899。尽管不是乱码,但总莫名显示有些列超过最大限制。
处理方法:查网上的方法,是说最好源库读出,sqlldr所在环境(本人程序在unix),以及目标库字符集要一致。我在导出和导入的脚本设置:NLS_LANG="SIMPLIFIED CHINESE_CHINA".ZHS16GBK export NLS_LANG。库字符集为GBK,导入后错误减少。
其他方法:控制文件也可定义CHARACTERSET UTF16(未测试)
建议是最好库、sqlldr都使用相同的字符集,但是在我脚本定义支持中文后(原来默认是英文),不管目的库和源库是否相同,都可以导入。但另一个问题是,没办法100%导入,我导入3w,有一条无法导入。