sqluldr2 导出文件中文乱码

本文介绍了解决使用SQL*Loader导出CSV文件时遇到的中文乱码问题的方法。通过调整SSH客户端及脚本文件的编码格式为GBK,确保了导出文件的中文标题在Excel中正确显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近遇到使用sqluldr2 导出数据出现后在excel中打开后出现中文乱码问题

数据库 AL32UTF8

服务器为 en_US.UTF-8

导出参数 query 语句中存在中文别名时,会出现 标识符太长的问题 ora-00972 。

发现sqluldr中存在charset 参数,因此加上 charset=ZHS16GBK ,但又出现无效字符问题 ora-00911 。

经过不断尝试,个人认为是在解析sql 语句时也会使用charset 而query中的中文又依赖ssh客户端的编码设置,于是将ssh客户端设置为gbk后,导出正确,且标题中文也不是乱码。

但我们的需求是:在服务器上导出,导出脚本是一个文件。经过测试,将脚本文件的编码更改为gbk以后,也可正常导出,无乱码。

使用如下命令执行

sh exportdata.sh

exportdata.sh的内容示例如下:

sqluldr2 user=scott/tigger@orcl query="select name 姓名 from users" charset=ZHS16GBK file=/app/test.csv head=yes

或者将query 写入文本文件,同时将文本文件的编码改为gbk

sqludlr2 user=scott/tigger@orcl sql=query.sql charset=ZHS16GBK file=/app/test.csv head=yes

都可导出文件,同时满足 标题为中文且在excel打开导出文件中文无乱码。

如果仅是导出csv文本文件而不用excel打开,只需设置charset与数据库一致即可。

 

另:在linux系统中,Oracle 数据库编码相关问题

需要检查ssh客户端、服务器环境变量 lang nls_lang 以及数据库的编码设置。

 

注:如发现错误请评论中指出,以免误导他人。

参考资料:

1、http://blog.itpub.net/29357786/viewspace-1420897/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值