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

Posted 老萌新码客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle 用中文作为关键字查询无数据及sql loader 导入数据时数据分隔异常的解决办法相关的知识,希望对你有一定的参考价值。

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

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

电脑C使用ctl将源文件导入本机Oracle中之后发现。导入的数据分隔错误,比如aaa@bbb@ccc格式的数据,sqlldr导入的时候用@分隔。但是实际导入结果并不是column1=aaa,column2=bbb, column3=ccc;有部分数据变成了column1=aaa@,column2=bbb@,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。之后测试一切正常。判断注册表不是问题原因,环境变量才是导致问题的原因。具体为什么要这么设置不得而知。留待以后研究。

以上是关于Oracle 用中文作为关键字查询无数据及sql loader 导入数据时数据分隔异常的解决办法的主要内容,如果未能解决你的问题,请参考以下文章

oracle 中字段作为变量的语句怎么写

Oracle中查询某字段不为空的SQL语句怎么写

Oracle的sql查询​没有办法屏蔽关键字么?

JDBC分页查询及实现

Oracle 分页查询rownum的用法

关于sql模糊查询(全字段)