oracle 使用外部表加载超过32mb的CLOB

vu8f3i0k  于 2023-04-20  发布在  Oracle
关注(0)|答案(1)|浏览(139)

我有一个外部表,其定义如下所示:

-- Create table
create table EXT_EXTRACT_XMLS
(
  extract_type  VARCHAR2(100),
  clob_filename VARCHAR2(100),
  xml_clob      CLOB
)
organization external
(
  type ORACLE_LOADER
  default directory MY_DIRECTORY
  access parameters 
  (
    RECORDS DELIMITED BY NEWLINE
    BADFILE MY_DIRECTORY:'Xml_Extract.bad'
    LOGFILE MY_DIRECTORY:'Xml_Extract.log'
    FIELDS TERMINATED BY ','
    MISSING FIELD VALUES ARE NULL
    (
      extract_type  char(100),
      clob_filename char(100)
    )
    COLUMN TRANSFORMS (xml_clob FROM LOBFILE (clob_filename))
  )
  location (MY_DIRECTORY:'xml_extract_list.txt')
)
reject limit UNLIMITED;

在目录MY_DIRECTORY中,我有一个名为xml_extract_list.txt的文件,看起来像这样:

A,extractA.xml

在同一个目录中,我有一个文件extractA.xml,我试图将它加载到表中,作为一行,该行中的CLOB列包含XML。
只要XML文件低于32MB,这基本上就能正常工作。一旦文件超过32MB,这就开始出错,我就不能再读取CLOB了。
这是外部表的限制,还是有一个选项或参数,我可以改变加载超过32MB的文件作为CLOB?

更多信息

我从表中选择的错误消息是:

由于该列是一个CLOB,所以我不能使用DUMP函数来调查幕后发生的事情。
外部表生成的日志文件没有给出任何错误消息。
外部表生成的坏文件为空。
当尝试使用sqlplus查询它时,它看起来有点畸形:

nkkqxpd9

nkkqxpd91#

试试看
https://oracle-base.com/articles/10g/external-tables-containing-lob-data

create table lob_tab (
  id            number,
  clob_content  clob
)
organization external
(
  type oracle_loader
  default directory temp_dir
  access parameters
  (
    records delimited by newline
    badfile temp_dir:'lob_tab_%a_%p.bad'
    logfile temp_dir:'lob_tab_%a_%p.log'
    fields terminated by ',' optionally enclosed by '"'
    missing field values are null
    (
      id,
      clob_content  char(1000000) 
    )
  )
  location ('inline_clob_test1.txt')
)
parallel 2
reject limit unlimited;

相关问题