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;