Импорт файла при помощи sqlldr

Поставлена задача импорта некоего табличного файла в формате CSV в базу данных Oracle. Чтобы это сделать нам понадобится таблица в базе, файл источник, файл контроллер и утилита для импорта. После беглово просмотра файла выяснилось, что колонки в нём разделены табуляциями.

Создадим таблицу:

create table username.table_name (
        field1 varchar2(10),
        field2 varchar2(10),
        field3 varchar2(10),
)

Содержимое источника table.csv:

field1  field2   field3
qwe    asd     zxc
sdf      345    56745
bvn     ury     78

Содержимое контроллера loader.ctl:

load data
  infile '/opt/oracle/table.csv'
  into table table_name
  fields terminated by "t"
  (
   field1,
   field2,
   field3
  )

Если нужно добавить данные, тогда так:

load data
  infile '/opt/oracle/table.csv'
  append
  into table table_name
  fields terminated by "t"  (
   field1,
   field2,
   field3
  )

Как показала практика после строки load data нужно всегда делать отступ в 1 пробел с начала каждой следующей строки, иначе sqlldr будет отображать ошибку импорта.

Выполним операцию импорта:

sqlldr username@server control=loader.ctl

Допустим нужно пропустить 1ю строку, в которой обычно записывают название колонок. тогда пишем так:

sqlldr username@server control=loader.ctl skip=1