当我们使用 sqlldr 使用 lob 文件中的文本值填充 NCLOB 列并且该字符不在常规 ASCII 代码范围内时,sqlldr 炸弹。
日志文件中看似相关的部分:
扩展数据派生 ***** VARARC 最大字段长度为 -2147483639 静态 LOBFILE。文件名是 C:\Temp\fb6b023e-7bac-4c93-814a-c7adecc11ad5.lob 为所有输入指定的字符集 UTF8。 SQL*Loader-462:将 LOB 插入列 EXTENSIONDATA、行 106、表 ENTITYEXTENSIONDATA 时出错 LOB 的辅助数据文件是 C:\Temp\fb6b023e-7bac-4c93-814a-c7adecc11ad5.lob lob 开头的文件偏移量是 18393 SQL*Loader-645:将字符长度字段转换为数字时出错
控制文件有
加载数据 字符集 UTF8 INFILE "C:\Temp\eb5e656c-94d1-4a0e-99be-3df8fa0d4461.bcp" BADFILE "C:\Temp\eb5e656c-94d1-4a0e-99be-3df8fa0d4461.bad" 附加 INTO TABLE EntityExtensionData 重新启用 由“||”终止的字段 尾随 NULLCOLS (EntityExtensionDataId,EntityId,ExtensionData LOBFILE(CONSTANT 'C:\Temp\eb5e656c-94d1-4a0e-99be-3df8fa0d4461.lob') VARCHARC(10,2147483647))