SQL * Loader - потужний інструмент для імпорту різних даних з файлу в базу даних.
Якщо треба завантажити що-небудь з файлу в БД, то цей інструмент, як раз те що вам допоможе.
Можливості SQL * Loader
- Завантаження даних з різних файлів в одній сесії
- Завантаження даних в різні таблиці в одній сесії
- Вказівка кодування файлу даних
- Використання SQL функцій перед завантаженням
- Генерація унікальних ключів для колонок
- Обмеження вставляються даних за умовою
- Завантаження двійкових даних
- Запис помилкових даних в файл помилок
На вході потрібно два файли:
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 - дозволяє пропускати колонку в даних і не вантажити в таблицю.
Запускаємо імпорт і дивимося результат:
Доп. інформацію можна подивитися тут: