使用Kettle 进行行Oracle数据迁移时处理编码转换处理US7ASCII 编码

4 篇文章 0 订阅
1 篇文章 0 订阅

查看Oracle数据源编码:

执行:

SELECT Userenv('language') FROM dual; 


结果:AMERICAN_AMERICA.US7ASCII

mysql  目标库 为utf-8

 

 

US7ASCII这个US7ASCII 到底是个神马字符集呢,我们知道其实 ascii是iso-8859-1的子集。那其实US7ASCII 也应该能够转化为iso-8859-1经过查资料与代码测试,当读取 oracle 字符集为 US7ASCII的时候,可以从数据中得到中文字符,然后以iso-8859-1 encode,再以gbk decode来正确显示中文。如果你要用程序处理可以这样去操作。但是我们目前的一个项目是用kettle来处理数据做ETL 的。kettle上处理oracle  US7ASCII字符集有没有好的解决方案呢。答案是有的。废话少说,上教程:

本教程是从字符集为US7ASCII 的oracle 将数据迁移到字符集utf-8的mysql 上。其他请自行 尝试,直接以最简单的表输入,表输出为例子:

解决方式如图:

1 数据源允许简易转换 (重要,该选项及告诉kettle我们将自己转码,不需要它去适配)
2 中间加两个字段的选择,进行编码转化

 

完成!

 

如果是从US7ASCII 字符集的数据迁移到US7ASCII的数据库。将两个字段选择组件进行调换即可。(ps 这个目前为猜想,没有环境还没有测试)如有错误欢迎指正

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值