我试图将多个数据文件加载到一个表中。现在文件本身具有以下格式:
file_uniqueidentifier.dat_date
我的控制文件看起来像这样
LOAD DATA
INFILE '/home/user/file*.dat_*'
into TABLE NEWFILES
FIELDS TERMINATED BY ','
TRAILING NULLCOLS
(
FIRSTNAME CHAR NULLIF (FIRSTNAME=BLANKS)
,LASTNAME CHAR NULLIF (LASTNAME=BLANKS)
)
另一方面,我的SQLLDR看起来像这样
sqlldr control=loader.ctl, userid=user/pass@oracle, errors=99999,direct=true
产生的错误是SQL * Loader-500无法打开文件(/home/user/file*.dat_*)找不到SQL * Loader-553文件
有没有人知道如何处理这个问题?
答案 0 :(得分:2)
SQLLDR
无法识别通配符。让它使用多个文件来明确列出它们的唯一方法。您可以使用shell脚本执行此操作。
答案 1 :(得分:1)
您的文件命名约定似乎可以将这些文件组合成一个使sqlldr控制文件使用的文件。我不知道如何在Unix中将这些文件合并到一个文件中,但在Windows中我可以发出此命令
copy file*.dat* file.dat
此命令将读取名称以 file 开头且 dat 扩展名的文件的所有内容,并放入 file.dat < / em>文件。
答案 2 :(得分:0)
我已经使用过这个选项,这适用于将多个文件上传到单个表格中。
options ( skip=1 )
load data
infile 'F:\oracle\dbHome\BIN\sqlloader\multi_file_insert\dept1.csv'
infile 'F:\oracle\dbHome\BIN\sqlloader\multi_file_insert\dept2.csv'
truncate into table scott.dept2
fields terminated by ","
optionally enclosed by '"'
( DEPTNO
, DNAME
, LOC
, entdate
)