2017-09-26 41 views
0

在數據類型爲varchar(30)的MySql中存在一條記錄,其中包含西里爾文字符以及英文字符。獲取「值太大」錯誤,同時通過Informatica 9.6.1將相同列數據類型作爲varchar2(30)加載到Oracle數據庫。任何人都可以解釋它爲什麼會發生這種情況。在這兩個數據庫中,字符集都是UTF8。將西里爾文記錄加載到Oracle數據庫中時出現長度錯誤

例如,mySQl中的數據是'Александровском2022'。載入相同到Oracle DB,得到下面的錯誤:

ORA-12899:用於列 「DB」 值過大 「USER_DETAILS」 「AUTHORITY_NAME」(實際:31,最大:30)

回答

0

在Oracle可以指定您的列的最大大小是300 BYTE還是300 CHAR。 如果300字節,你已經定義(顯式或隱式)你的列有最大大小。 因此,一些小於300個字符的字符串需要多於300個字節,因爲西里爾字符需要UTF8中的1個字節以上。 您可以將列的定義更改爲varchar2(300 CHAR)。 如果省略[BYTE | CHAR],則數據庫將回退到NLS_LENGTH_SEMANTICS中定義的設置。這可以在數據庫或會話中設置。

相關問題