Teradata - MultiLoad
MultiLoad kann mehrere Tabellen gleichzeitig laden und verschiedene Arten von Aufgaben wie INSERT, DELETE, UPDATE und UPSERT ausführen. Es kann bis zu 5 Tabellen gleichzeitig laden und bis zu 20 DML-Operationen in einem Skript ausführen. Die Zieltabelle wird für MultiLoad nicht benötigt.
MultiLoad unterstützt zwei Modi -
- IMPORT
- DELETE
MultiLoad benötigt zusätzlich zur Zieltabelle eine Arbeitstabelle, eine Protokolltabelle und zwei Fehlertabellen.
Log Table - Wird verwendet, um die während des Ladens genommenen Prüfpunkte beizubehalten, die für den Neustart verwendet werden.
Error Tables- Diese Tabellen werden beim Laden eingefügt, wenn ein Fehler auftritt. In der ersten Fehlertabelle werden Konvertierungsfehler gespeichert, während in der zweiten Fehlertabelle doppelte Datensätze gespeichert werden.
Log Table - Verwaltet die Ergebnisse aus jeder Phase von MultiLoad zum Neustart.
Work table- Das MultiLoad-Skript erstellt eine Arbeitstabelle pro Zieltabelle. Die Arbeitstabelle wird verwendet, um DML-Aufgaben und die Eingabedaten zu speichern.
Einschränkung
MultiLoad hat einige Einschränkungen.
- Eindeutiger Sekundärindex wird in der Zieltabelle nicht unterstützt.
- Referenzielle Integrität wird nicht unterstützt.
- Trigger werden nicht unterstützt.
So funktioniert MultiLoad
Der MultiLoad-Import besteht aus fünf Phasen:
Phase 1 - Vorbereitende Phase - Führt grundlegende Einrichtungsaktivitäten aus.
Phase 2 - DML-Transaktionsphase - Überprüft die Syntax von DML-Anweisungen und bringt sie zum Teradata-System.
Phase 3 - Erfassungsphase - Bringt die Eingabedaten in Arbeitstabellen und sperrt die Tabelle.
Phase 4 - Anwendungsphase - Wendet alle DML-Vorgänge an.
Phase 5 - Bereinigungsphase - Löst die Tabellensperre auf.
Die Schritte in einem MultiLoad-Skript sind:
Step 1 - Richten Sie die Protokolltabelle ein.
Step 2 - Melden Sie sich bei Teradata an.
Step 3 - Geben Sie die Ziel-, Arbeits- und Fehlertabellen an.
Step 4 - Definieren Sie das INPUT-Dateilayout.
Step 5 - Definieren Sie die DML-Abfragen.
Step 6 - Benennen Sie die IMPORT-Datei.
Step 7 - Geben Sie das zu verwendende LAYOUT an.
Step 8 - Laden Sie ein.
Step 9 - Beenden Sie das Laden und beenden Sie die Sitzungen.
Beispiel
Erstellen Sie eine Textdatei mit den folgenden Datensätzen und benennen Sie die Datei als 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
Das folgende Beispiel ist ein MultiLoad-Skript, das Datensätze aus der Mitarbeitertabelle liest und in die Employee_Stg-Tabelle lädt.
.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;
Ausführen eines MultiLoad-Skripts
Sobald die Eingabedatei employee.txt erstellt und das Multiload-Skript als EmployeeLoad.ml bezeichnet wurde, können Sie das Multiload-Skript mit dem folgenden Befehl unter UNIX und Windows ausführen.
Multiload < EmployeeLoad.ml;