sqluldr2工具导出 字符集为WE8ISO8859P1的ORACLE数据库数据

 

使用sqluldr2导出大批量数据遇到的坑

第一坑,使用sqluldr2在oracle bin目录下执行后,没有任何效果,没有日志也没有数据。肯定是在/etc/profile  或者.bash_profile 文件中配置了 NLS_LANG的问题,注释掉或者换一个值试试看

 

第二坑,背景是需要把ORACLE中的历史数据导出做数据备份存储,由于ORACLE配置的字符集是AMERICAN.AMERICA_WE8ISO8859P1,然后通过XSHELL工具执行sqluldr2命令导出数据,,无论如何都无法正常中文字符,最开始毫无头绪,

1.网上说配置sqluldr2的charset 来设置字符,UTF8、ZHS16GBK、AL32UTF8均没有效果

2.通过统一服务器的环境变量中的NLS_LANG与数据库的字符来测试,依然没有效果,甚至还抱有侥幸心理,会不会服务器上没有正常显示,我通过XFTP把导出来的数据下载下来,再重新导入数据库,中文就可以正常显示了呢,如果真是这样,那我就不需要考虑导出来的数据是否存在中文乱码了,不过,结果还是无法正常显示中文

找了很多资料都没有找到跟我这个数据库环境一样的情况,

最后看到一篇文章说,除了要统一数据库与服务器环境变量的NLS_LANG,还需要修改你执行脚本这个工具的字符,比如我使用的是XSHELL,默认的字符是使用的UTF8,当我把这个字符修改为GBK的时候,奇迹发生了,汉字就正常的显示了,对于大批量导出数据就很容易了

建议测试sqluldr2的时候,先使用小批量的数据进行测试,

 

第三坑,第一次导出数据,通过上述办法正常解决了,没有中文乱码的问题。

但更换了服务器之后,使用上述方法,无法达到所需要的效果,还是以字符集为WE8ISO8859P1的数据库来举例说明,

首先保证/etc/profile 中设置NLS_LANG的值为WE8ISO8859P1,

数据库的字符集也为WE8ISO8859P1,

然后xshell这个客户端的编码设置为GBK即可,按道理只要保证source /etc/profile就可以正常处理了。

但一直没有起作用,过了一段时间再回来测试中文的时候,就没有问题了。所以。有时候需要给服务器一点时间,emmmm,重启服务器试试也可以

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值