oracle sqlloader半个汉字,Oracle SPOOL和SQL Loader的字符集转换问题(原创)

Oracle SPOOL和SQL Loader的字符集转换问题(原创)

最近做Oracle的数据迁移,将数据从一个数据库导入到另外一个数据,自己用Java编写了程序。思路是首先用 Oracle的 sql plus将数据SPOOL到数据文件中,然后再用Oracle 的SQL Loader将数据从数据文件加载到表中。这个过程是一个表对一个表(当然Oracle SQL Loader支持一表对多表),程序采用多线程实现。

但是测试的时候发现由于源库的字符集和目的库不一样,因此,无论怎样选字段分隔符都不能成功导入数据。在查了好多资料后,才最终解决。因此,总结出以下几点:

1、在数据导出时,一定要使客户端字符集与源Oracle 服务器字符集一致,这点可以修改注册表 NLS_LANG参数,或者增加NLS_LANG环境变量

2、在数据导入时,客户端字符集设置可以不变,但在Sqlldr的控制文件中一定要有这行:CHARACTERSET 目的Oracle服务器字符集

3、sqlldr的控制文件格式类似:

LOAD DATA

CHARACTERSET 目的Oracle服务器字符集

INFILE  。。。。。。。。。。

4、查看目的数据库中导入的数据时请将客户端字符集设置为与目的数据库相同,不然看到的还是乱码。

5、如果两者字符集一致,可以采用数据链路(DATA LINK)的方式进行数据的迁移。

这个小问题困扰了我好几天。大家如果转载请注明出处,或者加上本文链接,算是对我的一点点鼓励吧 :)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值