我正在尝试将值加载到一个表中,其中一列是使用SQL Loader的BFILE。
我的表格如下:
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:第7行的Suntax错误。
期待","或")",找到" bfilename"。
, text bfilename('MY_DIRECTORY', 'my_file.txt') terminated by eof) ^
我做错了什么或SQL Loader不接受BFILE?
谢谢,
答案 0 :(得分:1)
文档有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
字段声明为integer
; this is a full-word binary integer,您可能无法获得表格列中的预期值。
如果您想明确转换为数字,您可以这样做:
...
fields terminated by ';'
( id "to_number(:id)"
, filename filler
, text bfile(constant 'MY_DIRECTORY', filename) )
但隐式转换通常也可以。