测试部使用sqlldr入库的时候遇到一个奇怪的问题 ,明明字段长度是256,数据文件中的列长度也是256,却报Field in data file exceeds maximum length问题,后来试着将字段长度改成280\300\1300照样导不进去,觉得很奇怪
查询MOS找到了答案:
fix: Change controlfile to define column as CHAR ('length') SQL*Loader does not have the concept different character datatypes. Incoming character data is assumed to be type char with a default length of 255. Thus, if the character string in the source Data File is more than 255 characters you will receive this error.
原来sqlldr引擎在检验数据文件的时候,遇到字符类型的时候,默认不能超过255,超过了就报错,如果想load超过255的字符,需要在控制文件中指明:
adress char(256),
可以看出sqlldr引擎的数据校验只是基于规则的校验,不会考虑实际表字段,这可能也是基于性能的一个考虑