SQLLDR控制文件:加载多个文件

时间:2012-02-10 14:36:41

标签: sql oracle toad

我试图将多个数据文件加载到一个表中。现在文件本身具有以下格式:

                          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文件

有没有人知道如何处理这个问题?

3 个答案:

答案 0 :(得分:2)

SQLLDR无法识别通配符。让它使用多个文件来明确列出它们的唯一方法。您可以使用shell脚本执行此操作。

答案 1 :(得分:1)

您的文件命名约定似乎可以将这些文件组合成一个使sqlldr控制文件使用的文件。我不知道如何在Unix中将这些文件合并到一个文件中,但在Windows中我可以发出此命令

copy file*.dat* file.dat

此命令将读取名称以 file 开头且 dat 扩展名的文件的所有内容,并放入 file.dat < / em>文件。

答案 2 :(得分:0)

我已经使用过这个选项,这适用于将多个文件上传到单个表格中。


- SQL-Loader基本控制文件

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
  )