Контрольный файл SQLLDR: загрузка нескольких файлов - PullRequest
2 голосов
/ 10 февраля 2012

Я пытаюсь загрузить несколько файлов данных в одну таблицу. Теперь сами файлы имеют следующий формат:

                          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 ]

2 голосов
/ 10 февраля 2012

SQLLDR не распознает подстановочный знак.Единственный способ заставить его использовать несколько файлов для явного перечисления их.Возможно, вы могли бы сделать это с помощью сценария оболочки.

1 голос
/ 02 июля 2013

Соглашение о присвоении имен файлам выглядит так, как будто вы можете объединить эти файлы в один, чтобы тот использовался управляющим файлом sqlldr.Я не знаю, как вы можете объединить эти файлы в один файл в Unix, но в Windows я могу выполнить эту команду

copy file*.dat* file.dat

Эта команда будет читать все содержимое файлов, имена которых начинаются сс файлом и расширением dat и помещением в файл file.dat .

0 голосов
/ 15 октября 2014

Я использовал эту опцию, и она отлично работает для загрузки нескольких файлов в одну таблицу.


- Базовый управляющий файл 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
  ) 
...