使用Oracle SQL*Loader加载CLOB数据时遇文件未找到错误求助
问题根源与解决方法
你的SQL*Loader控制文件逻辑错误,导致了文件找不到的报错:
- 你使用了
LOBFILE(clob_filename)语法,这个语法的作用是从指定的外部文件中读取LOB内容,要求你的data.txt每条记录存储的是LOB文件的路径/文件名。 - 但实际你的
data.txt里直接存储的是CLOB内容(比如JSON文本),SQL*Loader误把这些内容当成了要打开的文件名,自然找不到对应文件,触发SQL*Loader-553错误。
正确的控制文件写法
如果data.txt每条记录就是完整的CLOB内容,直接将字段定义为CLOB类型即可,不需要LOBFILE:
LOAD DATA INFILE '/u01/TSDEV/data/data.txt' TRUNCATE INTO TABLE commentary (value CLOB)
额外注意事项
- 若CLOB内容本身包含换行符,需要指定自定义的记录终止符,避免SQL*Loader把内容里的换行当成记录分隔。例如,假设每条记录末尾用
|||END|||标记:LOAD DATA INFILE '/u01/TSDEV/data/data.txt' "str'|||END|||'" TRUNCATE INTO TABLE commentary (value CLOB) - 若存在特殊字符编码问题,可在控制文件开头添加字符集声明,比如:
CHARACTERSET UTF8 LOAD DATA ...
内容的提问来源于stack exchange,提问作者Landon Statis
相关产品推荐
相关产品推荐

