Unicode ORA-12899-升级到Oracle 12C时,列的值太大
我的项目正在进行技术升级,因此我们正在将Oracle DB从11g升级到12c。SAP DataServices已升级至14.2.7.1156版 Oracle 12C中的表默认为varchar(byte),而它应该是varchar(char)。我知道这很正常。因此,我为运行的每个数据存储更改了会话Unicode ORA-12899-升级到Oracle 12C时,列的值太大,unicode,sap,oracle12c,sap-data-services,Unicode,Sap,Oracle12c,Sap Data Services,我的项目正在进行技术升级,因此我们正在将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字符,比如汉字(即东) 从Oracl
`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 BOD中需要更改什么设置,因为我的Oracle似乎工作得很好。 < P>我想,你应该考虑从VARCHAR2(X字节)到VARCHAR2(X CHAR)修改表列,以允许Unicode(UTF-8格式)数据,并避免<代码> ORA-12899 < /P>
create table test1 (name varchar2(100));
insert into test1 values ('east');
insert into test1 values ('东');
alter table test1 modify name varchar2(100 char);
--您可以为每个列选中“char\u used”,如-
select column_name, data_type, char_used from user_tab_columns where table_name='TEST1';
我认为,您应该考虑从VARCHAR2(X字节)到VARCHAR2(X CHAR)修改表列,以允许Unicode(UTF-8格式)数据,并避免<代码> ORA-12899 < /P>
create table test1 (name varchar2(100));
insert into test1 values ('east');
insert into test1 values ('东');
alter table test1 modify name varchar2(100 char);
--您可以为每个列选中“char\u used”,如-
select column_name, data_type, char_used from user_tab_columns where table_name='TEST1';