Oracle SQLLDR LOBFILE

y3bcpkx1  于 2023-05-16  发布在  Oracle
关注(0)|答案(1)|浏览(96)

我们正在加载一个包含大约40,000条记录的文件。每条记录基本上是一个长CLOB值,最多100,000个字符。我尝试这样使用SQL Loader:

LOAD DATA 
INFILE '/u01/TSDEV/data/data.txt'
TRUNCATE INTO TABLE commentary
(clob_filename       FILLER CHAR(100),
 value               LOBFILE(clob_filename) TERMINATED BY EOF)

但我在每一张唱片上都看到了这一点:

Path used:      Conventional
SQL*Loader-502: unable to open data file 
'[{"cid":"1","ts_id":"1","group_id":"0","c_subject":"Above is the summary of new trades across our Tr' for field VALUE table COMMENTARY
SQL*Loader-553: file not found
SQL*Loader-509: System error: No such file or directory
SQL*Loader-502: unable to open data file 
'[{"cid":"2","ts_id":"1","group_id":"0","c_subject":"Is Italy the Next Greece?","c_message":"<p><span' for field VALUE table COMMENTARY

所以,它会看到文件,因为它会显示内容。但为什么会出错呢?不会加载任何数据。
任何帮助都很感激。

cpjpxq1n

cpjpxq1n1#

如果数据只是内联的,那么就不要使用LOBFILE。LOBFILE用于当数据包含包含LOB数据的文件的***名称***时,即SQL Loader数据文件中每行一个文件。对于内联数据,指定一个较大的CHAR大小,例如

LOAD DATA 
INFILE 'sample.dat' 
INTO TABLE my_table
FIELDS TERMINATED BY ','
   (name        CHAR(25),
    mylobdata   CHAR(10000))

如果您的LOB数据包含所有类型的数据(换行符、分隔符等),那么您需要使用某些已知值对数据进行前缀/后缀,然后让SQL Loader知道它,例如

LOAD DATA 
INFILE 'sample.dat' 
INTO TABLE my_table
FIELDS TERMINATED BY ','
   (name        CHAR(25),
    mylobdata   CHAR(10000) ENCLOSED BY '<startlob>' AND '<endlob>')

相关问题