Використання завантажувача oracle

Використання завантажувача Oracle

  • Короткий огляд
  • Створення керуючого файлу
  • Створення файлу даних
  • завантаження даних
  • Завантаження даних без створення файлу даних
  • Завантаження даних формату DATE
  • Введення значень NULL

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

Створення керуючого файлу

Звичайний керуючий файл має наступну структуру:

  • <имяФайлаДанных> - це ім'я файлу даних. Якщо не вказано розширення, Oracle приймає розширення за замовчуванням (.dat). Якщо файл має інше розширення, його треба вказувати явно.
  • <имяТаблицы> - це ім'я таблиці, куди будуть додаватися дані. Перед виконанням операції завантаження таблиця повинна бути створена.
  • Ключове слово показує, що дані будуть додані до таблиці з ім'ям <имяТаблицы>. Якщо ключове слово APPEND опущено, таблиця перед виконанням операції завантаження повинна бути порожня, інакше буде згенеровано помилка
  • <разделитель> визначає, ніж відокремлені в файлі даних один від одного значення стовпців. Як роздільник можна використовувати будь-який одиночний символ. Зазвичай, як роздільник використовується такий символ, який не може бути присутнім в якості значення стовпця.
  • Список імен стовпців (атрибутів) таблиці <имяТаблицы> - це імена стовпців, в які повинні бути завантажені дані з файлу. Список полягає в круглі дужки, імена відокремлені один від одного комами. У список не обов'язково включаються всі стовпці таблиці, порядок їх включення не обов'язково той, що і в таблиці. Sqlldr буде шукати відповідність імен зі списку імена в структурі таблиці. Всім стовпцями, імена яких не включені в список будуть присвоєні значення NULL,

    Приклад керуючого файлу 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 додасть розширення за замовчуванням ".ctl". Файл даних в цій команді не вказується, тому що воно є в керуючому файлі. - це ім'я файлу реєстрації. Якщо ім'я вказано без розширення, sqlldr додасть розширення за замовчуванням ". Log". У цей файл буде міститися інформація про роботу операції завантаження така, як кількість завантажених рядків (кортежів), опису помилок, які, можливо, відбулися і т.п. - це ім'я файлу помилок. Якщо ім'я вказано без розширення, sqlldr додасть розширення за замовчуванням ".bad". У цей файл будуть додаватися "погані" рядки (кортежі), тобто рядки, для яких згенерована помилка при спробі, завантажити їх.

    Якщо реєстраційний файл або файл помилок не визначені, sqlldr використовує назву керуючого файлу з .log і .bad розширеннями, відповідно.

    Наприклад, якщо користувач sally хоче виконувати керуючий файл test.ctl і визначити реєстраційний висновок в файл test.log, то команда буде виглядати:

    Завантаження даних без використання файлу даних із роздільниками

    Можливо використовувати тільки керуючий файл, щоб завантажити дані, замість того, щоб використовувати окремий файл даних.

    В цьому випадку, замість імені файлу задається символ "*" і використовується ключове слово BEGINDATA, щоб почати розділ даних в керуючому файлі.

    Завантаження даних формату DATE

    Завантаження даних, що мають тип DATE (дата) має деякі особливості.

    Припустимо, що створена таблиця зі стовпцем, що має тип даних DATE:

    У керуючому файлі, при описі стовпців (атрибутів) таблиці foo, за ім'ям стовпця d необхідно вказати тип даних DATE і маску дати. Маска визначає формат, в якому дати будуть використовуватися. Маска - це рядок символів, укладена в лапки і містить:

  • Послідовності символів d, м. Або y, що позначають поля в ваших даних, які будуть інтерпретуватися як дні, місяці, роки, відповідно. Як і майже всі в SQL, великі і малі літери в рівній мірі допустимі, наприклад, MM - поле в місяць.
  • Довжини цих полів визначають максимальні довжини для відповідних значень в ваших даних. Однак дані можуть бути коротше.
  • Інші символи, типу "-" (риски), які обробляються буквально, і повинні з'явитися в ваших даних, якщо поміщені в маску.

    Наприклад, керуючий файл може виглядати:

    Зауважимо, що в наведеному прикладі, другий рядок (кортеж) ілюструє, що дані можуть бути коротше, ніж відповідна маска. Символ "-" покаже завантажувачу, що поля день і місяць завершуються раніше.

    Введення значень типу NULL

    Можна визначати значення NULL просто залишаючи порожніми поля в файлі даних. Наприклад, для введення цілочисельних значень в таблицю зі структурою (a, b, c), можна розмістити наприклад такі рядки у файлі даних:

    Це призведе до вставки наступних рядків (кортежів) в таблицю:

    Треба пам'ятати, що значення первинних ключів або інших обмежень не можуть бути порожніми, тому такі рядки не будуть додаватися.

    Зауваження: якщо в останньому полі файлу даних має стояти порожній значення (NULL), то в керуючий файл треба включити рядок TRAILING NULLCOLS після FIELDS TERMINATED BY КІНЦЕВИЙ NULLCOLS, інакше sqlldr не додасть цей рядок (кортеж). Sqlldr також відхилить рядки (кортежі), в яких всі значення стовпців учтановлени як NULL.

    Схожі статті