Использование Oracle SQL*Loader для загрузки данных в таблицы

Данный минифак не претендует на полноту отражения всех особенностей работы с SQL*Loader, а служит для того, чтобы быстро войти в тему

SQL*Loader — специальная утилита Oracle сервера для загрузки данных в БД из локальных файлов с данными. Для того чтобы воспользоваться ее функционалом создадим несколько файлов, которые будем использлвать в работе, и положим их в папку C:\oracle\ora90\BIN\load (в общем случае):

  • data.dat или data.txt — собственно файл с данными. Пусть он будет представлять строки данных разделенных сиволом перевода строки.
  • load.ctl — контрольный файл — содержит инструкции по загрузке данных в БД, в нашем случае будет иметь вид:
    LOAD DATA -- Загружаем данные
    INFILE 'data.txt'  "str '\n'" -- из файла data.txt, разделитель строк str '\n' - символ перевода строки
    INTO TABLE load_data -- в таблицу load_data
    FIELDS terminated BY ',' OPTIONALLY ENCLOSED BY '"'
    (DATA char) -- название столбца и тип данных в таблице load_data

    То что мы не используем, но встречается часто: fields terminated by ‘,’ означает, что границы данных определены по символу «,», а optionally enclosed by ‘»‘ определяет, что данные могут содержать символ обрамления.

  • load.bat — пакетный файл (англ. batch file) выполняющий запуск sqlldr.exe имеет вид:
    SET nls_lang=russian_cis.ru8pc866 -- устанавливаем нужную кодировку
    sqlldr.exe userid=user_name/user_pass@test control=LOAD.ctl errors=100 bad=DATA.bad -- test — строка связи*, load.ctl — контрольный файл, data.bad — файл плохих записей

    Строка связи — это та строка, которая должна быть прописана в ORA Network Configuration File: D:\oracle\ora90\network\admin\tnsnames.ora (в общем случае). Errors=100 — количество допустимых ошибок (по умолчанию 50).

  • Далее находим нашу папку C:\oracle\ora90\BIN\load, находим файл load.bat, запускаем его и любуемся на результат:
    SELECT * FROM load_data;

    Пока все, пишите об ошибках и неточностях.

Пара полезных ссылок по теме:

Примечание:
Интересно, что при сохранении *.xslx в «.csv с разделителем запятой» разделителем на самом деле становится точка с запятой.

Оставить комментарий