通过 SQL Loader 加载 bfile

loading bfile via SQL Loader

我正在尝试使用 SQL 加载程序将值加载到 table 中,其中一列是 BFILE。

我的 table 看起来像这样:

create table documents 
    ( id number primary key
    , text bfile)

这是我的 CTL 和 DAT 文件:

loader.ctl

load data
infile d':\test\loader.dat'
into table documents
replace
fields terminated by ';'
    ( id integer
    , text bfilename('MY_DIRECTORY', 'my_file.txt') terminated by eof)

loader.dat

3;my_file.txt

当我用上面的参数执行sqlldr命令时,我收到错误信息:

SQL*Loader-350: Suntax error at line 7.

Expecting "," or ")", found "bfilename".

    , text bfilename('MY_DIRECTORY', 'my_file.txt') terminated by eof)

    ^

是我做错了什么还是 SQL 加载程序不接受 BFILE?

谢谢,

文档有 a section on loading BFILE columns.

您需要有一个填充列来表示数据文件中的文件名字段,然后在 bfile() 而非 bfilename() 字段定义中引用该填充字段名称:

load data
infile d:\test\loader.dat
into table documents
replace
fields terminated by ';'
    ( id
    , filename filler
    , text bfile(constant 'MY_DIRECTORY', filename) )

您不希望您的 ID 字段被声明为 integerthis is a full-word binary integer,您可能不会在 table 列中获得预期的值。

如果您想明确转换为数字,您可以这样做:

...
fields terminated by ';'
    ( id "to_number(:id)"
    , filename filler
    , text bfile(constant 'MY_DIRECTORY', filename) )

但隐式转换通常也可以。