我尝试使用sqlldr
插入多张图片。一切正常,没有任何问题,但插入后,当我检查图像大小时,它不是实际大小,而是小于此。
我正在使用一个包含两列的表来测试sqlldr的工作情况。表包含一个整数列和一个blob(用于图像)。
控制文件:
load data infile 'path of text file'
append into table TEST
fields terminated by ","
(
NAME,IMAGE
)
数据文件:
1,path of image
查询我用来测试文件长度:
select name,length(image),dbms_lob.getlength(image)
from test;
大多数图像的尺寸为900到1000kb。插入后文件的大小为29kb。有人可以在这个问题上帮助我。如果我所遵循的步骤是错误的,那么sqlldr
除了工作之外不应该起作用。我无法弄清楚我在哪里做错了。
答案 0 :(得分:1)
您需要告诉sqlldr
第二列实际上是文件名而不是实际数据:
load data infile 'path of text file'
append into table TEST
fields terminated by ","
(
name,
input_file FILLER,
image LOBFILE(input_file) TERMINATED BY EOF
)
注意行input_file FILLER,
,它为输入文件中的第二列定义占位符。表达式image LOBFILE(input_file)
然后将文件内容放入列image
有关详细信息,请参阅SQL*Loader manual,尤其是the example about loading LOB files