Терадата - MultiLoad
MultiLoad может загружать несколько таблиц одновременно, а также выполнять различные типы задач, такие как INSERT, DELETE, UPDATE и UPSERT. Он может загружать до 5 таблиц одновременно и выполнять до 20 операций DML в сценарии. Целевая таблица не требуется для MultiLoad.
MultiLoad поддерживает два режима -
- IMPORT
- DELETE
MultiLoad требует наличия рабочей таблицы, таблицы журнала и двух таблиц ошибок в дополнение к целевой таблице.
Log Table - Используется для поддержания контрольных точек, взятых во время загрузки, которые будут использоваться для перезапуска.
Error Tables- Эти таблицы вставляются во время загрузки при возникновении ошибки. Первая таблица ошибок хранит ошибки преобразования, тогда как вторая таблица ошибок хранит повторяющиеся записи.
Log Table - Сохраняет результаты каждой фазы MultiLoad для перезапуска.
Work table- Скрипт MultiLoad создает одну рабочую таблицу для каждой целевой таблицы. Рабочий стол используется для хранения задач DML и входных данных.
Ограничение
MultiLoad имеет некоторые ограничения.
- Уникальный вторичный индекс не поддерживается в целевой таблице.
- Ссылочная целостность не поддерживается.
- Триггеры не поддерживаются.
Как работает MultiLoad
Импорт MultiLoad состоит из пяти этапов -
Phase 1 - Предварительный этап - выполняет основные действия по настройке.
Phase 2 - Фаза транзакции DML - проверяет синтаксис операторов DML и переносит их в систему Teradata.
Phase 3 - Этап сбора данных - переносит входные данные в рабочие таблицы и блокирует таблицу.
Phase 4 - Фаза приложения - Применяет все операции DML.
Phase 5 - Фаза очистки - снимает блокировку стола.
Шаги, задействованные в сценарии MultiLoad:
Step 1 - Настроить журнальный столик.
Step 2 - Войдите в Teradata.
Step 3 - Укажите таблицы Target, Work и Error.
Step 4 - Определите макет файла INPUT.
Step 5 - Определите запросы DML.
Step 6 - Назовите файл IMPORT.
Step 7 - Укажите ПЛАН, который будет использоваться.
Step 8 - Инициируйте загрузку.
Step 9 - Завершите загрузку и завершите сеансы.
пример
Создайте текстовый файл со следующими записями и назовите файл employee.txt.
101,Mike,James,1980-01-05,2010-03-01,1
102,Robert,Williams,1983-03-05,2010-09-01,1
103,Peter,Paul,1983-04-01,2009-02-12,2
104,Alex,Stuart,1984-11-06,2014-01-01,2
105,Robert,James,1984-12-01,2015-03-09,3
В следующем примере показан сценарий MultiLoad, который считывает записи из таблицы сотрудников и загружает их в таблицу Employee_Stg.
.LOGTABLE tduser.Employee_log;
.LOGON 192.168.1.102/dbc,dbc;
.BEGIN MLOAD TABLES Employee_Stg;
.LAYOUT Employee;
.FIELD in_EmployeeNo * VARCHAR(10);
.FIELD in_FirstName * VARCHAR(30);
.FIELD in_LastName * VARCHAR(30);
.FIELD in_BirthDate * VARCHAR(10);
.FIELD in_JoinedDate * VARCHAR(10);
.FIELD in_DepartmentNo * VARCHAR(02);
.DML LABEL EmpLabel;
INSERT INTO Employee_Stg (
EmployeeNo,
FirstName,
LastName,
BirthDate,
JoinedDate,
DepartmentNo
)
VALUES (
:in_EmployeeNo,
:in_FirstName,
:in_Lastname,
:in_BirthDate,
:in_JoinedDate,
:in_DepartmentNo
);
.IMPORT INFILE employee.txt
FORMAT VARTEXT ','
LAYOUT Employee
APPLY EmpLabel;
.END MLOAD;
LOGOFF;
Выполнение сценария MultiLoad
После создания входного файла employee.txt и имени сценария множественной загрузки EmployeeLoad.ml вы можете запустить сценарий множественной загрузки, используя следующую команду в UNIX и Windows.
Multiload < EmployeeLoad.ml;