使用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抛出了错误的异常,(实际:2624,最大值:3500). 2624小于3500.
解决方法
所有数据文件(UFT-16除外)的默认长度语义是字节.因此,在您的情况下,您有一个3500字节的CHAR而不是字符.您的文件中有一些多字节字符,因此2624个字符使用超过3500个字节,因此(误导性)消息.
您可以使用字符长度语义对此进行排序
在控制文件中更改此行
characterset UTF8
对此
characterset UTF8 length semantics char
它将用于CHAR字段(以及其他一些字符)的字符 – 与设置表的方式相同,因此每个字符最多包含3500个字符.
有关详细信息,请参阅Character Length Semantics的“实用程序指南”