最近項目中要遇到一個問題: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插入,無此類情況發生。