datastage插入表時字符長度過大

在使用DATASTAGE+ORACLE把一個文本文件的數據加載到數據庫的時候,發現丟了一條記錄,查看了一下job log,說插入值對於列過大。

用排除法最後確定是IMA32F這一列的問題,在數據庫中關於這一列的定義是char(50)

可是源文件在transformer中已經做了截取處理了啊,substrings(trim(IMA32F),1,50) 這樣怎麼還會差不進去了。

很鬱悶,無奈使用@inrownum找到是第166行出錯了。打開文本文件,定位到166行,找到此字段的對應長度爲26位漢字,然後再找到截取後的,發現還是26位!!

咦,咋沒截斷呢?

原來DS中中文字符是作爲一個字符長度來處理的,而oracle中卻是佔用2個字符長度的

這樣26*2=52 已經超過了char(50),怪不得查不進去呢。。。。得意

原因查到,由於此字段只可能爲中文,所以改爲substrings(trim(IMA32F),1,25)

運行成功,搞定!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章