最近项目中要遇到一个问题:http://blog.csdn.net/scottxie1980/archive/2006/12/06/1432543.aspx
使用DataStage将数据源文件数据导入到DB2中时,发现有个别中文字缺失。
当时第一反应是DataStage中字符集设置不正确。然而先后将Source,TargetTable,Job Properties的NLS更改后(几乎用遍了里面所提供的字符集 其中能在viewData时正确显示的是 MS936,None是忽略字符集即原来是什么样就是什么样。这个的话有时候会照成分隔符识别错误。),但是问题依旧。
看来不是DataStage的问题,因为在选择MS936时 ViewData是可以正确显示哪些缺失的中文字的。由于项目中DataStage是装在AIX上的,怀疑是AIX字符集设置问题。或者是DB本身的字符集不支持。
作个试验,使用本地windows上的DataStage向同一个DB中插入相同的文本数据,ok,中文无缺失。那么就排除了DB不字符集不支持的情况。将该文本copy到AIX上,用vi打开。果然那些中文字无法正常显示。
经多方求教,得出结论。DataStage在将数据插入到DB前,先用其所在的机器上的DB Client进行字符集转换。而DBClient所用的字符集又是其所在操作系统上的。所以才会有AIX上插入时有中文缺失,而在windows平台上往DB插入,无此类情况发生。