Thứ Bảy, 1 tháng 10, 2011

Nhập, nạp và xuất dữ liệu - P10

Chèn dữ liệu vào từng dòng một sẽ rất mất thời gian, nhất là đối với các công ty có hàng nghìn nhân viên hoặc hàng triệu giao dịch với khách hàng. Các tiện ích nhập và nạp (load) sẽ làm các nhiệm vụ này đơn giản hơn. 

Ngoài ra, đôi khi cũng hữu ích hơn nếu đặt một số dữ liệu từ các bảng vào một tệp dữ liệu để phân tích và xử lý tiếp. Tiện ích xuất sẽ có tác dụng trong trường hợp này. Các tiện ích nhập, nạp và xuất cũng có thể được sử dụng để chuyển dữ liệu từ một bảng đến một bảng khác hoặc từ một cơ sở dữ liệu này đến cơ sở dữ liệu khác.

Trong bài tập sau đây bạn sẽ nhập dữ liệu từ một tệp trên đĩa rồi xuất trở lại từ bảng vào một tệp khác. 

Các tệp này được tạo ra để phục vụ cho hướng dẫn và có thể tìm thấy trong phần Tải về. Sau đó bạn sẽ sử dụng tiện ích nạp để nạp dữ liệu lưu trong một tệp vào một bảng.

Mặc dù các tiện ích nhập, xuất và nạp có sẵn nhiều tuỳ chọn, bài tập này tập trung vào các việc sau:

  • Kiểu tệp: Chỉ rõ khuôn dạng tệp để lưu dữ liệu. Trong ví dụ này, DEL có nghĩa là tệp ASCII có định giới (delimited ASCII file).
  • Câu lệnh Select: Cho biết bạn có thể chọn tất cả các cột từ một bảng (select *) khi xuất hoặc chỉ chọn một số cột cụ thể (select <column list>). Trong ví dụ này, bạn chọn tất cả các cột.
  • Thao tác nhập/nạp: Cho biết bạn có các lựa chọn trong khi nhập để chèn dữ liệu vào (append), thay thế nó, cập nhật bản đúp (update duplicates), hoặc tạo ra một bảng bằng cách sử dụng tệp dữ liệu. Trong ví dụ này, bạn chèn dữ liệu vào.

Để có mô tả đầy đủ về các tiện ích này, xin tham khảo DB2 Data Movement Utilities Guide and Reference (xem Tài nguyên).

B1: Sử dụng tiện ích nhập để nạp dữ liệu cho bảng HWLD.AUTHOR. Từ Trung tâm điều khiển, nhấn chuột phải vào bảng AUTHOR và chọn Import.

B2: Chọn các tuỳ chọn như hướng dẫn: 

Hình 30. Nhập liệu vào bảng – Author

Trước đó bạn đã báo cho DB2 biết sẽ sử dụng tệp author.del (kèm trong tệp zip mà bạn đã tải xuống) và sử dụng nó để nạp dữ liệu vào bảng HWLD.AUTHOR. Mọi thông báo liên quan đến việc nhập đều nằm trong tệp thông báo C:\DB2\hellowld\import.msg.

B3: Từ phiếu Columns, nhập vào đường dẫn để tìm các cột XML. 

Hình 31. Nhập liệu vào bảng – AUTHOR

Bạn có thể nhấn Show Command để quan sát lệnh nhập đầy đủ và ghi lưu nó nếu muốn. Thông báo DB20000 cho biết mọi việc tốt đẹp.

B4: Sử dụng lệnh nạp để nạp dữ liệu vào bảng HWLD.MODULE. Nhấn chuột phải vào bảng MODULE và chọn Load.

B5: Chọn Append data to table từ thủ thuật nạp. Nhấn Next.

B6: Điền đường dẫn đầy đủ và tên tệp của tệp dữ liệu nhập bằng cách định vị tệp module.del (kèm trong tệp zip mà bạn đã tải xuống) và chỉ rõ tệp thông báo. 

Hình 32. Thủ thuật nạp – Các tệp

B7: Nhấn Summary. Bạn sẽ thấy một lệnh nạp mà bạn có thể ghi lưu lại để chạy trong cửa sổ dòng lệnh. Nếu bạn nhấn Finish, lệnh sẽ thực hiện thành công, và bạn sẽ nhận được một cửa sổ hội thoại với thông báo DB20000.

B8: Thông qua tính toàn vẹn của dữ liệu và truy vấn dữ liệu.

Do bảng MODULE có các ràng buộc toàn vẹn (integrity constraints) đã được định nghĩa, sau khi chạy tiện ích nạp, phải thông qua tính toàn vẹn để bảng này có thể truy nhập được. Để thực hiện việc này, chạy câu lệnh SET INTEGRITY từ bộ soạn thảo lệnh. Lệnh SET INTEGRITY sẽ kiểm tra để đảm bảo rằng mọi dòng đều thỏa mãn các điều kiện ràng buộc và loại bỏ bất kỳ dòng nào không đáp ứng điều kiện này.

B9: Chọn bảng MODULE và nhấn Query

Hình 33. Truy vấn bảng HWLD.MODULE

Thao tác này sẽ cho chạy câu lệnh mặc định SELECT * đối với bảng.

B10: Trước khi chạy lệnh SELECT, thêm vào câu lệnh SET INTEGRITY có nội dung sau:

------------------------------ Commands Entered ----------------------------- 
set integrity for hwld.module immediate checked; 
SELECT * FROM HWLD.MODULE;
----------------------------------------------------------------------------- 
set integrity for hwld.module immediate checked 
DB20000I The SQL command completed successfully. 
SELECT * FROM HWLD.MODULE 
MODULE_ID MODULE_NAME
----------- -------------------- 
1 DB2 UDB 
2 WebSphere 
3 Tivoli 
4 Eclipse 
5 Rational 
6 Lotus Notes 
7 Web Commerce 

7 record(s) selected. 

Nạp bảng HWLD.PARTICIPANT. Từ Trung tâm điều khiển, nhấn chuột phải vào bảng PARTICIPANT và chọn Load. Chọn các tuỳ chọn nạp như ghi rõ trong Hình 58, tương tự như cách đã làm đối với bảng HWLD.MODULE. Tệp participant.del có kèm trong tệp zip mà bạn đã tải xuống

Hình 34. Thủ thuật nạp bảng

Một lần nữa, do bảng PARTICIPANT có các ràng buộc tham chiếu, việc nạp sẽ đặt nó vào chế độ chờ kiểm tra, nên nó không thể truy nhập được cho đến khi toàn bộ các dòng được thông qua.

B12: Nhấn bảng PARTICIPANT và chọn Query. Trước câu lệnh select, gõ nhập vào câu lệnh SET INTEGRITY. Thay đổi nội dung câu lệnh select để chỉ gồm tên học viên, ID, và điểm số sát hạch cho những học viên có ID là 4:

------------------------------ Commands Entered ----------------------------- 
set integrity for hwld.participant immediate checked; 
SELECT PAR_NAME, PAR_ID, PAR_TEST_SCORE FROM HWLD.PARTICIPANT where PAR_ID=4; 
----------------------------------------------------------------------------- 
set integrity for hwld.participant immediate checked 
DB20000I The SQL command completed successfully. 
SELECT PAR_NAME, PAR_ID, PAR_TEST_SCORE FROM HWLD.PARTICIPANT where PAR_ID=4 
PAR_NAME PAR_ID PAR_TEST_SCORE
----------------------------------------- -------------------- -------------- 
mike 4 60 
mike 4 80 


2 record(s) selected. 

B13: Bây giờ các bảng đã được nạp dữ liệu, hãy xuất dữ liệu thành một tệp dữ liệu. Để chọn xuất từ bảng nào, nhấn chuột phải vào bảng AUTHOR và chọn Export. Cửa sổ sau đây sẽ mở: 

Hình 35. Xuất bảng

B14: Nhập thông tin được yêu cầu như chỉ dẫn trong hình trên. Từ phiếu Columns, đánh dấu tùy chọn để đặt mỗi tài liệu XML trong một tệp riêng. Bạn có thể nhấn Show Command để xem câu lệnh và ghi lưu lại nó hoặc cho chạy sau này trên dòng lệnh.

Bạn sẽ thấy thông báo DB20000 cho biết mọi thứ đều tốt đẹp. 

Tệp xuất là C:\DB2\hellowld\user1_author.del. Nội dung của tệp user1_author.del như sau:

"Claire",1,"DB2 UDB ","<XDS FIL='author.del.001.xml'/>", 100
"Renata",2,"DB2 UDB ","<XDS FIL='author.del.002.xml'/>", 98
"Jane",3,"WEB COMMERCE ","<XDS FIL='author.del.003.xml'/>", 89 

Lưu ý: Rằng cột MODULE_NAME được đệm thêm cho đủ 20 ký tự. Hơn nữa, các tài liệu XML này không thực sự nằm trong tệp DEL mà chỉ tồn tại một tham chiếu (XDS) đến tệp chứa dữ liệu XML.

Sau đây là nội dung của tệp author.del.001.xml đã được định dạng lại cho dễ đọc:

<?xml version="1.0" encoding="UTF-8" ?>
<author_info>
<name>Claire</name>
<ID>1</ID>
<department>
<department_title>DB2 CE</department_title>
<responsibility>Supporting customer problems</responsibility>
<start_year>2005</start_year>
</department>
<department>
<department_title>DB2 Index Manager</department_title>
<responsibility>Develop new features for DB2 indexes</responsibility>
<start_year/>
</department>
</author_info> 

Nếu bạn sử dụng một trình duyệt Web để xem tài liệu XML, bạn sẽ thấy nội dung sau:

Hình 36. Dữ liệu XML

Source: Ibm.com

Không có nhận xét nào:

Đăng nhận xét