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;