Teradata - Çoklu Yük
MultiLoad bir seferde birden fazla tablo yükleyebilir ve ayrıca INSERT, DELETE, UPDATE ve UPSERT gibi farklı görev türlerini gerçekleştirebilir. Bir seferde en fazla 5 tablo yükleyebilir ve bir kodda en fazla 20 DML işlemi gerçekleştirebilir. MultiLoad için hedef tablo gerekli değildir.
MultiLoad iki modu destekler -
- IMPORT
- DELETE
MultiLoad, hedef tabloya ek olarak bir çalışma tablosu, bir günlük tablosu ve iki hata tablosu gerektirir.
Log Table - Yeniden başlatma için kullanılacak olan yükleme sırasında alınan kontrol noktalarını korumak için kullanılır.
Error Tables- Bu tablolar, bir hata oluştuğunda yükleme sırasında eklenir. İlk hata tablosu dönüştürme hatalarını saklarken, ikinci hata tablosu yinelenen kayıtları saklar.
Log Table - Yeniden başlatma amacıyla MultiLoad'un her aşamasından sonuçları korur.
Work table- MultiLoad komut dosyası, hedef tablo başına bir çalışma tablosu oluşturur. Çalışma tablosu, DML görevlerini ve giriş verilerini tutmak için kullanılır.
Sınırlama
MultiLoad'un bazı sınırlamaları vardır.
- Benzersiz İkincil Dizin, hedef tabloda desteklenmiyor.
- Bilgi tutarlılığı desteklenmiyor.
- Tetikleyiciler desteklenmez.
MultiLoad Nasıl Çalışır?
MultiLoad içe aktarmanın beş aşaması vardır -
Phase 1 - Ön Aşama - Temel kurulum etkinliklerini gerçekleştirir.
Phase 2 - DML İşlem Aşaması - DML ifadelerinin sözdizimini doğrular ve bunları Teradata sistemine getirir.
Phase 3 - Edinme Aşaması - Giriş verilerini çalışma tablolarına getirir ve tabloyu kilitler.
Phase 4 - Uygulama Aşaması - Tüm DML işlemlerini uygular.
Phase 5 - Temizleme Aşaması - Masa kilidini kaldırır.
Bir MultiLoad betiğinde yer alan adımlar şunlardır:
Step 1 - Günlük tablosunu ayarlayın.
Step 2 - Teradata'da oturum açın.
Step 3 - Hedef, Çalışma ve Hata tablolarını belirtin.
Step 4 - INPUT dosya düzenini tanımlayın.
Step 5 - DML sorgularını tanımlayın.
Step 6 - İTHALAT dosyasını adlandırın.
Step 7 - Kullanılacak DÜZENİ belirtin.
Step 8 - Yükü başlatın.
Step 9 - Yüklemeyi bitirin ve seansları sonlandırın.
Misal
Aşağıdaki kayıtlarla bir metin dosyası oluşturun ve dosyayı Employee.txt olarak adlandırın.
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
Aşağıdaki örnek, çalışan tablosundaki kayıtları okuyan ve Employee_Stg tablosuna yükleyen bir MultiLoad betiğidir.
.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 Komut Dosyasını Yürütme
EmployeeLoad.ml giriş dosyası oluşturulup multiload komut dosyası EmployeeLoad.ml olarak adlandırıldıktan sonra, UNIX ve Windows'ta aşağıdaki komutu kullanarak Multiload komut dosyasını çalıştırabilirsiniz.
Multiload < EmployeeLoad.ml;