使用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))
我的 table
create table actvuty_facr{
metadata varchar2(3500 char)
}
为什么SQL Loader抛出错误的异常
(actual: 2624, maximum: 3500)
。 2624小于3500。 最佳答案
所有数据文件(UFT-16除外)的默认长度语义是字节。因此,在您的情况下,您有3500个字节的CHAR,而不是字符。您的文件中有一些多字节字符,因此2624个字符使用了3500个以上的字节,因此(误导)消息。
您可以通过使用字符长度语义来解决此问题
更改控制文件中的这一行
characterset UTF8
对此
characterset UTF8 length semantics char
并且可以在CHAR字段(以及其他字段)的字符上工作-与您设置表格的方式相同,因此3500个字符(每个字符最多四个字节)。
有关更多信息,请参见Character Length Semantics上的《实用程序指南》。