SAP DataServices - Oracle 12C升级 - Varchar(字节)到Varchar(字符)

时间:2016-10-26 12:23:34

标签: unicode oracle-sqldeveloper sap oracle12c

我的项目正在进行技术升级,因此我们将Oracle DB从11g升级到12c。 SAP DataServices已升级到版本14.2.7.1156。

当Oracle 12C中的表默认为varchar(char)时,默认为varchar(byte)。我明白这很正常。因此,我为每个运行

的数据存储区更改了会话
`ALTER session SET nls_length_semantics=CHAR;`

当我使用varchar(1)创建一个新表时,我可以将来自中文字符(即东)的unicode字符加载到Oracle的新表中。

但是,当我尝试通过SAPDS将相同的unicode字符加载到同一个表中时,它会向我抛出错误'ORA-12899 - 值对于列来说太大了'。我的数据存储区设置为:

区域设置

-Language:默认

-Code页面:utf-8

- 服务器代码页:utf-8

会话

- 附加会话参数:

`ALTER session SET nls_length_semantics=CHAR`

我真的很想知道我的SAP BODS需要更改哪些设置,因为我的Oracle似乎工作正常。

1 个答案:

答案 0 :(得分:0)

我认为,您应该考虑将表列从varchar2(x BYTE)修改为varchar2(x CHAR)以允许Unicode(UTF-8格式)数据并避免使用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';