Как использовать утилиты импорта, такие как Fastload или MLOAD в Teradata, если целевая таблица имеет ссылочную целостность?
Я новичок в Teradata, начал исследовать несколько недель назад. Я знаю, что утилиты Fastload или Multiload будут работать только в том случае, если в таблицах нет ссылочной целостности, например отношения внешнего ключа. Я хотел знать, что, если моя таблица действительно имеет ссылку на внешний ключ, и я хочу импортировать данные в эту таблицу из любого текстового файла или файла с разделителями. Есть ли настройка использования fastload/mload или любого альтернативного метода импорта?
1 ответ
Гаутам Вакани,
Я считаю, что вам нужен TPUPM, но из трех утилит загрузки в Teradata эта наименее эффективна. Я рекомендую FastLoad, и способ заключается в том, что вы сбрасываете исходные данные в целевые таблицы, подходящие для FastLoad, а затем в Teradata вы делаете необходимое преобразование. Ниже я привел некоторую информацию и некоторые различия между этими тремя типами, чтобы вы могли выбирать в зависимости от ваших потребностей и плана производительности. Я могу отправить вам несколько примеров сценариев, если они вам понадобятся.
Утилита FastLoad используется для загрузки данных в пустые таблицы. Поскольку он не использует временные журналы, данные могут быть загружены быстро. Он не загружает повторяющиеся строки, даже если целевая таблица является таблицей MULTISET.
Ограничение - целевая таблица не должна иметь вторичный индекс, индекс соединения и ссылку на внешний ключ.
Как работает FastLoad - FastLoad выполняется в два этапа. FastLoad делит свою работу на две фазы, обе из которых рассчитаны на скорость.
Фаза 1 или фаза приобретения
- Основная цель этапа 1 - получить данные с главного компьютера в систему Teradata.
- Механизмы синтаксического анализа считывают записи из входного файла и отправляют блок каждому AMP. Данные перемещаются блоками по 64 КБ и хранятся в рабочих таблицах AMP.
- Каждый AMP хранит блоки записей.
- Затем AMP хешируют каждую запись и перераспределяют их в правильный AMP.
- В конце фазы 1 у каждого AMP есть свои строки, но они не находятся в хэш-последовательности строк, поскольку она сохраняется вначале.
Фаза 2
- Фаза 2 начинается, когда FastLoad получает оператор END LOADING.
- После перемещения данных с сервера каждый AMP будет хешировать строки своей рабочей таблицы.
- Каждый AMP сортирует записи по хешу строк и записывает их на диск.
- Каждый поток переходит на рабочие столы, где они постоянно проживают.
- Строки таблицы хранятся на дисках в блоках данных.
- Блокировки целевой таблицы снимаются, а таблицы ошибок удаляются.
Однако MultiLoad не имеет таких ограничений. MultiLoad может загружать несколько таблиц одновременно, а также выполнять различные типы задач, такие как INSERT, DELETE, UPDATE и UPSERT. Он может загружать до 5 пустых или заполненных целевых таблиц одновременно из среды LAN или Channel и выполнять до 20 операций DML в сценарии. Целевая таблица не требуется для MultiLoad. MultiLoad поддерживает два режима:
- ИМПОРТИРОВАТЬ
- УДАЛЯТЬ
MultiLoad требует наличия рабочей таблицы, таблицы журнала и двух таблиц ошибок в дополнение к целевой таблице.
- Таблица журнала - таблица журнала хранит информацию о записи обработки во время загрузки. Эта таблица содержит по одной строке для каждого MultiLoad, запущенного в системе.
- Таблицы ошибок: Как и FastLoad, MultiLoad также имеет две таблицы ошибок. Первая таблица ошибок (ET). Он содержит все ошибки перевода и ограничений, которые могут возникнуть при получении данных из источника (ов). Вторая таблица нарушения уникальности (UV), в которой хранятся строки с повторяющимися значениями для уникальных первичных индексов (UPI).
- Рабочий стол (ы): MultiLoad автоматически создаст по одному рабочему столу для каждой целевой таблицы. Обычно в режиме IMPORT у MultiLoad может быть одна или несколько рабочих таблиц, а в режиме DELETE - только одна. Назначение рабочих таблиц: 1) выполнение задач DM 2) Применение входных данных к AMP.
Ограничение - MultiLoad имеет некоторые ограничения.
- Уникальные вторичные индексы не поддерживаются в целевой таблице: как и FastLoad, MultiLoad не поддерживает уникальные вторичные индексы (USI). Но в отличие от FastLoad, он поддерживает использование неуникальных вторичных индексов (NUSI), потому что строка подтаблицы индекса находится на том же AMP, что и строка данных.
- Ссылочная целостность не поддерживается: ссылочная целостность, определенная для таблицы, потребует дополнительных проверок системы, чтобы предотвратить ссылочные ограничения.
- Триггеры не поддерживаются во время загрузки: отключите все триггеры перед их использованием.
- Не допускается объединение входных файлов: это может повлиять на перезапуск, если файлы были объединены в другой последовательности или данные были удалены между запусками.
- Нет индексов соединения: все индексы соединения должны быть отброшены перед запуском MultiLoad, а затем воссозданы после завершения загрузки.
- Не будет обрабатывать агрегаты, арифметические функции или возведение в степень: если вам нужно преобразование данных или математика, вам может быть лучше использовать INMOD для подготовки данных перед их загрузкой.
- Целевая таблица: целевые таблицы могут содержать данные. MultiLoad может загружать данные там, где целевая таблица уже загружена.
Как работает MultiLoad - импорт MultiLoad состоит из пяти этапов ИМПОРТА:
- Этап 1 - Предварительный этап - Это этап базовой настройки. Он используется для нескольких предварительных действий по настройке для успешной загрузки данных.
- Фаза 2 - Фаза DML Transacon - Проверяет синтаксис операторов DML и передает их в систему Teradata. Все операторы языка манипулирования данными SQL (DML) отправляются в базу данных Teradata, поскольку MultiLoad поддерживает несколько функций DML.
- Этап 3 - Этап сбора данных - после завершения настройки план PE сохраняется на каждом AMP. Затем блокировки, заголовки таблиц и фактические входные данные также будут сохранены в рабочей таблице. Переносит входные данные в рабочие таблицы и блокирует таблицу.
- Этап 4 - Этап применения. На этом этапе все операции DML применяются к целевым таблицам.
- Фаза 5 - Фаза очистки - Блокировки таблиц будут сняты, и все промежуточные рабочие таблицы будут отброшены.
TPUMP - это сокращенное название Teradata Parallel Data Pump. Как стало известно, FastLoad и MultiLoad - это множество огромных объемов данных. Но TPump загружает данные по одной строке за раз, используя блокировки хэша строк. Поскольку он блокируется на этом уровне, а не на уровне таблицы, как MultiLoad, TPUMP может выполнять множество одновременных или одновременных обновлений таблицы. TPump выполняет вставки, обновления, удаления и обновления из плоских полей в заполненные таблицы Teradata на УРОВНЕ СТРОКИ.
TPump поддерживает:
- Вторичные индексы
- Ссылочная целостность
- Триггеры
- Присоединить индексы
- Накачивайте данные с разной скоростью.
Ограничения
- Объединение файлов входных данных не допускается.
- TPump не обрабатывает агрегаты, арифметические функции или возведение в степень.
- Использование функции SELECT запрещено.
- В одной задаче загрузки можно использовать не более четырех команд IMPORT.
- Даты до 1900 года или после 1999 года должны быть представлены в формате гггг для части года даты, а не в формате по умолчанию - гг.
- В некоторых подключенных к сети системах максимальный размер файла при использовании TPump составляет 2 ГБ.
- Производительность TPump будет снижена при использовании журнала доступа.
TPump поддерживает одну таблицу ошибок. Таблица ошибок делает следующее:
- Выявляет ошибки.
- Предоставляет некоторые сведения об ошибках
- Сохраняет часть фактической ошибочной строки для отладки
Как и другие утилиты, сценарий TPump можно полностью перезапустить, пока не удаляются таблица журнала и таблицы ошибок.