关于KETTLE的数据库转换乱码问题的解决方案
一、问题描述
近期通过ETL实现了对室分管理平台的数据钻取功能,但是在结果中出现了乱码, 导致无法进行数据查看,相关的错误截图如下:
WYD-JZ-00130 ?????? 荆州-42875
WYD-JZ-00153 ?????? 荆州-40445
WYD-JZ-00235 ?????? 荆州-41975
WYD-JZ-00154 ?????? 荆州-40825
WYD-JZ-00155 ?????? 荆州-40295
WYD-JZ-00156 ?????? 荆州-40795
WYD-JZ-00045 ?????? 荆州-40805
WYD-JZ-00157 ?????? 荆州-42925
WYD-JZ-00047 ?????? 荆州-40935
WYD-JZ-00131 ?????? 荆州-41745
WYD-JZ-00048 ?????? 荆州-40025
WYD-JZ-00158 ?????? 荆州-40845
WYD-JZ-00020 ?????? 荆州-40795
WYD-JZ-00238 ?????? 荆州-40805
图 1 数据转换的截图
从问题现象看,问题原因为中文字符显示乱码的问题。
二、解决方案
2.1 问题分析
在kettle中进行数据抽取,如果抽取的源数据库和目标数据库不是同一个数据库,可能会导致转换后的中文出现乱码情况,原因是由于在中文环境下有的数据库客户端默认编码格式是UTF-8,而另外的数据库编码格式是GBK,这样就导致数据乱码的情况出现。在这种情况下可以考虑对环境变量进行修改,就能够解决这个问题。
2.2 解决方案
选择出现乱码的数据库链接名称(如下:2222)
设置 characterEncoding 为 gbk
三、参考资料
http://blog.csdn.net/gaoyusi4964238/article/details/5871682
http://vase.iteye.com/blog/1525852