Oracle sqlloader

SQL * Loader - потужний інструмент для імпорту різних даних з файлу в базу даних.
Якщо треба завантажити що-небудь з файлу в БД, то цей інструмент, як раз те що вам допоможе.

Можливості SQL * Loader

  • Завантаження даних з різних файлів в одній сесії
  • Завантаження даних в різні таблиці в одній сесії
  • Вказівка ​​кодування файлу даних
  • Використання SQL функцій перед завантаженням
  • Генерація унікальних ключів для колонок
  • Обмеження вставляються даних за умовою
  • Завантаження двійкових даних
  • Запис помилкових даних в файл помилок

Oracle sqlloader

На вході потрібно два файли:

2) Керуючий файл (.CTL)

Файл опису структури даних (loader control file), містить опис типів даних стовпців, спосіб поділу стовпців, як обробляти дані і т.д. Саме в цьому файлі задаються настройки обробки файлу даних. Частина налаштувань, можна перевизначити через командний рядок при запуску Oracle SQL * Loader.

1) Дані в таблиці БД

2) Файл звіту (Log file)

3) Файл з некоректними даними (Bad files) - дані які вставили через будь-яких обмежень БД

4) Файл з відкинутими даними (Discard files) - дані які не пройшли додаткові умови

Керуючий файл SQL * Loader (CTL)

Приклад файлу «myexample.ctl»:

1 - OPTIONS дозволяє задати ряд параметрів не в командному рядку, а безпосередньо в файлі.
2 - LOAD DATA потрібно на початку керуючого файлу
3 - CHARACTERSET якщо потрібно вказати кодування.
4 - INFILE визначає файл з вихідними даними.
5 - BADFILE визначає файл з некоректними даними.
6 - DISCARDFILE визначає файл з відкинутими даними.
7 - метод завантаження даних в таблицю

Використовується за замовчуванням. Таблиця перед завантаженням не повинна містити дані. Якщо в таблиці є рядки даних, то виконання завантаження SQL * Loader-му не буде виконано

Дозволяє додавати рядки в таблицю таким чином, щоб вони не чинили впливу на вже існуючі рядки даних.

Видаляються всі наявні в таблиці рядки, а потім завантажуються нові. При видаленні рядків спрацьовують тригери існуючі на таблиці.

Видаляються всі наявні в таблиці рядки. Тригери не спрацьовують.

8 - INTO TABLE + назва таблиці для вставки даних
9 - FIELDS TERMINATED BY визначає роздільник даних в файлі даних
10 - OPTIONALLY ENCLOSED BY ' »' визначає, що дані можуть містити символ обрамлення
11 - TRAILING NULLCOLS якщо поле не має даних у файлі даних, то записати NULL
12-15 - опис стовпців таблиці, з застосовуваними SQL функціями

Запуск імпорту даннихSQL * Loader

Щоб розпочати завантаження даних через SQL * Loader

Пам'ятайте, що перед запуском скрипта завантаження, таблиця вже має бути створена.

Опції командного рядка SQL * Loader

Список параметрів можна отримати запустивши SQL * Loader без вказівки параметрів:

Дані для завантаження безпосередньо в керуючому файлі

Приклад даних містяться в керуючому файлі. Початок даних визначає оператор BEGINDATA

Виконуємо скрипт test.sh і дивимося результат:

Плюс створився файл логу XX_MYEXAMPLE.log

Дані з різними роздільниками в даних + форматування дати

файл XX_MYEXAMPLE2.ctl
Оператор FILLER - дозволяє пропускати колонку в даних і не вантажити в таблицю.

Запускаємо імпорт і дивимося результат:

Доп. інформацію можна подивитися тут:

Схожі статті