Sqlldr不插入完整文件

时间:2015-01-26 17:42:00

标签: oracle sql-loader

我尝试使用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除了工作之外不应该起作用。我无法弄清楚我在哪里做错了。

1 个答案:

答案 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