Teradata - MultiLoad
MultiLoad puede cargar varias tablas a la vez y también puede realizar diferentes tipos de tareas como INSERT, DELETE, UPDATE y UPSERT. Puede cargar hasta 5 tablas a la vez y realizar hasta 20 operaciones DML en un script. La tabla de destino no es necesaria para MultiLoad.
MultiLoad admite dos modos:
- IMPORT
- DELETE
MultiLoad requiere una mesa de trabajo, una tabla de registro y dos tablas de errores además de la tabla de destino.
Log Table - Se usa para mantener los puntos de control tomados durante la carga que se usarán para reiniciar.
Error Tables- Estas tablas se insertan durante la carga cuando ocurre un error. La primera tabla de errores almacena errores de conversión, mientras que la segunda tabla de errores almacena registros duplicados.
Log Table - Mantiene los resultados de cada fase de MultiLoad con el propósito de reiniciar.
Work table- El script MultiLoad crea una tabla de trabajo por tabla de destino. La tabla de trabajo se utiliza para mantener las tareas DML y los datos de entrada.
Limitación
MultiLoad tiene algunas limitaciones.
- El índice secundario único no es compatible con la tabla de destino.
- No se admite la integridad referencial.
- No se admiten activadores.
Cómo funciona MultiLoad
La importación de MultiLoad tiene cinco fases:
Phase 1 - Fase preliminar: realiza actividades básicas de configuración.
Phase 2 - Fase de transacción DML: verifica la sintaxis de las declaraciones DML y las lleva al sistema Teradata.
Phase 3 - Fase de adquisición: trae los datos de entrada a las tablas de trabajo y bloquea la mesa.
Phase 4 - Fase de aplicación: aplica todas las operaciones de DML.
Phase 5 - Fase de limpieza: libera el bloqueo de la mesa.
Los pasos involucrados en un script MultiLoad son:
Step 1 - Prepara la mesa de registro.
Step 2 - Inicie sesión en Teradata.
Step 3 - Especifique las tablas de destino, trabajo y error.
Step 4 - Definir el diseño del archivo INPUT.
Step 5 - Definir las consultas DML.
Step 6 - Nombre el archivo IMPORT.
Step 7 - Especifique el DISEÑO que se utilizará.
Step 8 - Iniciar la carga.
Step 9 - Finalizar la carga y finalizar las sesiones.
Ejemplo
Cree un archivo de texto con los siguientes registros y asigne un nombre al archivo 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
El siguiente ejemplo es un script MultiLoad que lee registros de la tabla de empleados y los carga en la tabla 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;
Ejecución de un script de carga múltiple
Una vez que se crea el archivo de entrada employee.txt y el script multiload se denomina EmployeeLoad.ml, puede ejecutar el script Multiload utilizando el siguiente comando en UNIX y Windows.
Multiload < EmployeeLoad.ml;