Sqlldr 没有插入完整的文件

Sqlldr does not insert complete file

我正在尝试使用 sqlldr 插入多张图片。一切正常,没有任何问题,但插入后,当我检查图像大小时,它不是实际大小,而是小于实际大小。

我正在使用带有两列的 table 来测试 sqlldr 的工作。 Table 包含一个整数列和一个 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 应该根本不起作用,但它会起作用。我无法弄清楚我在哪里做错了。

您需要告诉 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, especially the example about loading LOB files