我的项目正在进行技术升级,因此我们将Oracle DB从11g升级到12c。SAP DataServices升级到版本14.2.7.1156。
Oracle 12C中的表默认为varchar (byte),而它应该是varchar (char)。我知道这很正常。因此,我为运行的每个数据存储区更改了会话
`ALTER session SET nls_length_semantics=CHAR;`当我使用varchar (1)创建一个新表时,我能够将unicode字符(例如,东)从Oracle加载到新表中。
然而,当我试图通过SAPDS将相同的unicode字符加载到同一个表中时,它抛出了一个错误“ORA-12899-值对于列来说太大了”。我的数据存储区设置为:
Locale
Language: default
Code Page: utf-8
Server code page: utf-8
Additional session parameters:
ALTER session SET nls_length_semantics=CHAR我真的很想知道我需要在SAP BODS中更改哪些设置,因为我的Oracle似乎工作得很好。
发布于 2016-11-02 21:05:59
我认为,您应该考虑将表列从varchar2(x字节)修改为varchar2(x字符),以允许Unicode (UTF8格式)数据并避免ORA-12899。
create table test1 (name varchar2(100));
insert into test1 values ('east');
insert into test1 values ('东');
alter table test1 modify name varchar2(100 char);--您可以检查每个列的'char_used‘,如下所示-
select column_name, data_type, char_used from user_tab_columns where table_name='TEST1';https://stackoverflow.com/questions/40262226
复制相似问题