将西里尔文记录加载到Oracle DB时获取长度错误

时间:2017-09-26 12:08:42

标签: oracle

其中包含西里尔字符的记录以及数据类型为varchar(30)的MySql中的英文字符。将Informatica 9.6.1加载到具有列数据类型为varchar2(30)的Oracle数据库时,“值太大”错误。任何人都可以解释它为什么会这样发生。在两个DB中,字符集都是UTF8。

例如,mySQl中的数据是'Александровском2022'。将其加载到Oracle DB,得到以下错误:

ORA-12899:列“DB”的值太大。“USER_DETAILS”。“AUTHORITY_NAME”(实际:31,最大值:30)

1 个答案:

答案 0 :(得分:0)

在Oracle中,您可以指定列的最大大小是300 BYTE还是300 CHAR。 您已将(显式或隐式)列定义为具有最大大小(如果为300 BYTE)。 因此,一些少于300个字符的字符串将需要超过300个字节,因为西里尔字符在UTF8中需要超过1个字节。 您可以将列的定义更改为varchar2(300 CHAR)。 如果省略[BYTE | CHAR],则DB将回退到 NLS_LENGTH_SEMANTICS 中定义的设置。这可以在DB或会话上设置。