Oracle 用中文作为关键字查询无数据及sql loader 导入数据时数据分隔异常的解决办法

talkingDB 2019-11-11

前提:电脑A使用sqlldr向电脑B中的Oracle批量导入数据。数据分隔及查询都正常。

拷贝A中的源数据及ctl文件到电脑C中,拷贝B中的Oracle安装文件并安装至电脑C中。

电脑C使用ctl将源文件导入本机Oracle中之后发现。导入的数据分隔错误,比如@ccc格式的数据,sqlldr导入的时候用@分隔。但是实际导入结果并不是column1=aaa,column2=bbb, column3=ccc;有部分数据变成了,,column3=‘‘的这种情况,并且再使用select* from table xxx where column1 = ‘keyword‘ 查询的时候,非中文关键字查询正常。中文关键字 查询不到数据(实际有数据)。百度后网上一致认为是服务端和客户端字符集不一致原因造成。于是使用网上方法查询电脑C中Oracle服务端字符集编码方式和客户端字符集编码方式。前后将系统变量NLS,注册表文件中NLS都设置成了和服务端一样的AMERICAN_AMERICA.AL32UTF8,之后测试导入数据及查询仍然出现上述问题。后对比电脑C和电脑A的系统环境变量设置和注册表设置。先修改电脑C注册表NLS和A一样SIMPLIFEID CHINESE_CHINA.AL32UTF8,之后测试导入和查询,问题依然存在。随即修改系统变量NLS_LANG值为AMERICAN_AMERICA.ZHS16GBK。之后测试一切正常。判断注册表不是问题原因,环境变量才是导致问题的原因。具体为什么要这么设置不得而知。留待以后研究。

相关推荐