Teradata - โหลดหลายไฟล์

MultiLoad สามารถโหลดตารางได้หลายตารางและยังสามารถทำงานประเภทต่างๆเช่น INSERT, DELETE, UPDATE และ UPSERT สามารถโหลดได้สูงสุด 5 ตารางในแต่ละครั้งและดำเนินการ DML ได้ถึง 20 รายการในสคริปต์ ตารางเป้าหมายไม่จำเป็นสำหรับ MultiLoad

MultiLoad รองรับสองโหมด -

  • IMPORT
  • DELETE

MultiLoad ต้องการตารางงานตารางบันทึกและตารางข้อผิดพลาดสองตารางนอกเหนือจากตารางเป้าหมาย

  • Log Table - ใช้เพื่อรักษาจุดตรวจที่เกิดขึ้นระหว่างการโหลดซึ่งจะใช้สำหรับการรีสตาร์ท

  • Error Tables- ตารางเหล่านี้จะถูกแทรกระหว่างการโหลดเมื่อเกิดข้อผิดพลาด ตารางข้อผิดพลาดแรกจัดเก็บข้อผิดพลาดในการแปลงในขณะที่ตารางข้อผิดพลาดที่สองเก็บบันทึกที่ซ้ำกัน

  • Log Table - รักษาผลลัพธ์จากแต่ละเฟสของ MultiLoad เพื่อการรีสตาร์ท

  • Work table- สคริปต์ MultiLoad สร้างตารางงานหนึ่งตารางต่อตารางเป้าหมาย ตารางงานใช้เพื่อเก็บงาน DML และข้อมูลอินพุต

ข้อ จำกัด

MultiLoad มีข้อ จำกัด บางประการ

  • ไม่รองรับดัชนีรองเฉพาะในตารางเป้าหมาย
  • ไม่รองรับความสมบูรณ์ของการอ้างอิง
  • ไม่รองรับทริกเกอร์

MultiLoad ทำงานอย่างไร

การนำเข้า MultiLoad มีห้าขั้นตอน -

  • Phase 1 - ขั้นตอนเบื้องต้น - ดำเนินกิจกรรมการตั้งค่าพื้นฐาน

  • Phase 2 - DML Transaction Phase - ตรวจสอบไวยากรณ์ของคำสั่ง DML และนำไปยังระบบ Teradata

  • Phase 3 - Acquisition Phase - นำข้อมูลเข้ามาในตารางงานและล็อกตาราง

  • Phase 4 - Application Phase - ใช้การดำเนินการ DML ทั้งหมด

  • Phase 5 - Cleanup Phase - ปลดล็อคตาราง

ขั้นตอนที่เกี่ยวข้องกับสคริปต์ MultiLoad ได้แก่ -

  • Step 1 - ตั้งค่าตารางบันทึก

  • Step 2 - เข้าสู่ระบบ Teradata

  • Step 3 - ระบุตารางเป้าหมายงานและข้อผิดพลาด

  • Step 4 - กำหนดรูปแบบไฟล์ INPUT

  • Step 5 - กำหนดแบบสอบถาม DML

  • Step 6 - ตั้งชื่อไฟล์นำเข้า

  • Step 7 - ระบุ LAYOUT ที่จะใช้

  • Step 8 - เริ่มการโหลด

  • Step 9 - เสร็จสิ้นการโหลดและสิ้นสุดเซสชัน

ตัวอย่าง

สร้างไฟล์ข้อความด้วยเร็กคอร์ดต่อไปนี้และตั้งชื่อไฟล์เป็น staff.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

เมื่อสร้างไฟล์อินพุต Employ.txt และสคริปต์หลายโหลดถูกตั้งชื่อเป็น EmployeeLoad.ml คุณสามารถเรียกใช้สคริปต์ Multiload โดยใช้คำสั่งต่อไปนี้ใน UNIX และ Windows

Multiload < EmployeeLoad.ml;