带有utf8的SQL Loader

时间:2012-08-16 01:27:09

标签: oracle utf-8 sql-loader

使用SQL * Loader加载日文数据时出现以下错误。我的数据库是UTF8(NLS参数),我的操作系统支持UTF8。

Record 5: Rejected - Error on table ACTIVITY_FACT, column METADATA.
ORA-12899: value too large for column METADATA (actual: 2624, maximum: 3500)

我的控制文件:

load data
characterset UTF8
infile '../tab_files/activity_fact.csv' "STR ';'"
APPEND
into tableactivity_fact
fields terminated by ',' optionally enclosed by '~'
TRAILING NULLCOLS
(metadata CHAR(3500))

我的表

create table actvuty_facr{
metadata varchar2(3500 char)
}

为什么SQL Loader会抛出错误的异常(actual: 2624, maximum: 3500)。 2624小于3500。

1 个答案:

答案 0 :(得分:7)

所有数据文件(UFT-16除外)的默认长度语义是字节。因此,在您的情况下,您有一个3500字节的CHAR而不是字符。您的文件中有一些多字节字符,因此2624个字符使用超过3500个字节,因此(误导性)消息。

您可以使用字符长度语义对此进行排序

在控制文件中更改此行

characterset UTF8

到这个

characterset UTF8 length semantics char

它将对CHAR字段(以及其他一些字符)的字符起作用 - 与设置表的方式相同,因此每个字符最多包含3500个字符。

有关详细信息,请参阅Character Length Semantics上的“实用程序指南”