Використання завантажувача Oracle
- Короткий огляд
- Створення керуючого файлу
- Створення файлу даних
- завантаження даних
- Завантаження даних без створення файлу даних
- Завантаження даних формату DATE
- Введення значень NULL
Для того щоб використовувати, завантажувач Oracle, необхідно створити керуючий файл, в якому визначається, як дані повинні бути завантажені в базу; файл даних, який визначає які дані повинні бути завантажені в базу. Даний розділ присвячений опису, як створювати такі файли.
Створення керуючого файлу
Звичайний керуючий файл має наступну структуру:
Приклад керуючого файлу test.ctl:
Створення файлу даних
Кожен рядок файлу даних - це дані, які будуть рядком (кортежем) таблиці після завантаження. Кожен рядок містить список значень стовпців (атрибутів), значення розташовані в тому ж порядку, що й імена стовпців в списку імен стовпців керуючого файлу, значення розділені <разделителем>, визначеному в керуючому файлі.
Наприклад, файл даних test.dat може бути таким:
Нагадаємо, що список стовпців (атрибутів), визначений в test.ctl - (i, s), де стовпчик i має тип int, стовпець s - сhar (10). Тому, в результаті завантаження даних з файлу test.dat в таблицю test додадуться такі рядки (кортежі):
Попередження: Зверніть увагу, що третій рядок test.dat має прогалину після "|". Цей пробіл не ігнорується загрузчиком. Значення, яке буде завантажено для атрибута s - 'baz', чотирьох символьний рядок з початковим прогалиною. Помилково думати, що буде завантажено 'baz' (трьох символьний рядок без початкового пробілу) замість цього. Це може вести до проблем, на які Ви не будете звертати увагу, доки Ви не пробуєте зробити запит ваших завантажених даних, тому що 'baz' і 'baz' - різні строки.
Завантажувач Oracle називається sqlldr. Це команда UNIX, тому вона викликається з UNIX, а не з sqlplus. Команда має такий вигляд:
Всі параметри цієї команди необов'язкові, при їх відсутності система запросить ім'я користувача, пароль, ім'я керуючого файлу.
Якщо реєстраційний файл або файл помилок не визначені, sqlldr використовує назву керуючого файлу з .log і .bad розширеннями, відповідно.
Наприклад, якщо користувач sally хоче виконувати керуючий файл test.ctl і визначити реєстраційний висновок в файл test.log, то команда буде виглядати:
Завантаження даних без використання файлу даних із роздільниками
Можливо використовувати тільки керуючий файл, щоб завантажити дані, замість того, щоб використовувати окремий файл даних.
В цьому випадку, замість імені файлу задається символ "*" і використовується ключове слово BEGINDATA, щоб почати розділ даних в керуючому файлі.
Завантаження даних формату DATE
Завантаження даних, що мають тип DATE (дата) має деякі особливості.
Припустимо, що створена таблиця зі стовпцем, що має тип даних DATE:
У керуючому файлі, при описі стовпців (атрибутів) таблиці foo, за ім'ям стовпця d необхідно вказати тип даних DATE і маску дати. Маска визначає формат, в якому дати будуть використовуватися. Маска - це рядок символів, укладена в лапки і містить:
Наприклад, керуючий файл може виглядати:
Зауважимо, що в наведеному прикладі, другий рядок (кортеж) ілюструє, що дані можуть бути коротше, ніж відповідна маска. Символ "-" покаже завантажувачу, що поля день і місяць завершуються раніше.
Введення значень типу NULL
Можна визначати значення NULL просто залишаючи порожніми поля в файлі даних. Наприклад, для введення цілочисельних значень в таблицю зі структурою (a, b, c), можна розмістити наприклад такі рядки у файлі даних:
Це призведе до вставки наступних рядків (кортежів) в таблицю:
Треба пам'ятати, що значення первинних ключів або інших обмежень не можуть бути порожніми, тому такі рядки не будуть додаватися.
Зауваження: якщо в останньому полі файлу даних має стояти порожній значення (NULL), то в керуючий файл треба включити рядок TRAILING NULLCOLS після FIELDS TERMINATED BY КІНЦЕВИЙ NULLCOLS, інакше sqlldr не додасть цей рядок (кортеж). Sqlldr також відхилить рядки (кортежі), в яких всі значення стовпців учтановлени як NULL.