SQLLDR导入乱码问题的解决

Posted xmanman

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLLDR导入乱码问题的解决相关的知识,希望对你有一定的参考价值。

 

SQLLDR导入乱码问题的解决

 
处理过程:
1、本地建立控制文件
 
load data
infile ‘d:\TMP_KAITOUSHUJU.csv‘
into table TMP_KAITOUSHUJU
fields terminated by ‘,‘
(TRADE_CO,FULL_NAME,CUSTOMS_CODE,CO_CLASS,VALID_DATE,RG_DATE,ADDR_CO,BUSI_TYPE,CONTAC_CO,TEL_CO,LAW_MAN,LAW_MAN_TEL,CO_TYPE,BREAK_LAW_TIME1,BREAK_LAW_TIME2,INSPECT_TIME,COP_MODIFY_DATE)
2、WINDOWS下运用如下命令执行导入
sqlldr userid=test/[email protected] control=d:/TMP_KAITOUSHUJU.ctl log=d:/SQLLOAD.log
 
3、导入出错,提示部分列为空,查语法后改正控制文件如下
load data
infile ‘d:\TMP_KAITOUSHUJU.csv‘
into table TMP_KAITOUSHUJU
fields terminated by ‘,‘
trailing nullcols     --将所有不在纪录中的指定位置的列当作空值
(TRADE_CO,FULL_NAME,CUSTOMS_CODE,CO_CLASS,VALID_DATE,RG_DATE,ADDR_CO,BUSI_TYPE,CONTAC_CO,TEL_CO,LAW_MAN,LAW_MAN_TEL,CO_TYPE,BREAK_LAW_TIME1,BREAK_LAW_TIME2,INSPECT_TIME,COP_MODIFY_DATE)
 
4、导入成功,但打开一看乱码
通过select * from v$nls_parameters; 查看NLS_CHARACTERSET为AL32UTF8,
而我本机是GBK,于是本机通过DOS窗口进行如下设置:
set NLS_LANG=AMERICAN_AMERICA.AL32UTF8
同时更改控制文件如下:
load data
CHARACTERSET AL32UTF8               (在ctl文件加上字符集,与oracle的字符集相同即可 select * from v$nls_parameters t where t.PARAMETER =‘ NLS_CHARACTERSET‘;
infile ‘d:\TMP_KAITOUSHUJU.csv‘
into table TMP_KAITOUSHUJU
fields terminated by ‘,‘
trailing nullcols     --将所有不在纪录中的指定位置的列当作空值
(TRADE_CO,FULL_NAME,CUSTOMS_CODE,CO_CLASS,VALID_DATE,RG_DATE,ADDR_CO,BUSI_TYPE,CONTAC_CO,TEL_CO,LAW_MAN,LAW_MAN_TEL,CO_TYPE,BREAK_LAW_TIME1,BREAK_LAW_TIME2,INSPECT_TIME,COP_MODIFY_DATE)
 
 

以上是关于SQLLDR导入乱码问题的解决的主要内容,如果未能解决你的问题,请参考以下文章

sqlldr 采集中文数据乱码问题

myeclipse导入中文乱码怎么解决

如何解决Eclipse导入的Android工程里的中文乱码问题

用sqlldr加载数据出现问题,原始数据有5G,请大家帮忙解决,谢谢!

Myeclipse导入项目注释乱码问题的解决

解决windows 下 mysql命令行导入备份文件 查询时乱码的问题