Các mục tiêu của bài viết Trong hướng dẫn này, bạn sẽ: Học cách làm thế nào để trích xuất dữ liệu bằng cách sử dụng tiện ích EXPORT Học cách làm thế nào để điền dữ liệu vào bảng bằ
Trang 1Chuẩn bị kỳ thi số 731 lấy chứng chỉ DBA (Quản trị cơ sở dữ liệu) DB2 9,
Phần 5: Các tiện ích của DB2
Sẵn sàng cho kỳ thi
Clara Liu, Giám đốc sản phẩm DB2, IBM
Tóm tắt: Học các kỹ năng giúp bạn quản lý đúng cách các máy chủ cơ sở dữ liệu
DB2 của bạn Đây là phần thứ năm trong loạt bài hướng dẫn gồm bảy phần để giúp bạn chuẩn bị kỳ thi lấy Chứng chỉ quản trị cơ sở dữ liệu của DB2® 9 cho Linux®, UNIX® và Windows™ (Kỳ thi 731)
Trước khi bạn bắt đầu
Về loạt bài hướng dẫn này
Nếu bạn đang chuẩn bị dự kỳ thi 731 lấy chứng chỉ quản trị cơ sở dữ liệu (DBA) DB2, bạn đã đến đúng chỗ đây là một kiểu phòng tự học Loạt bảy bài hướng dẫn chuẩn bị lấy chứng chỉ DB2 này gồm các khái niệm chính mà bạn cần biết để làm bài kiểm tra Hãy làm bài tập ở nhà của bạn ở đây và giảm bớt căng thẳng trong ngày thi
Về bài hướng dẫn này
Bài hướng dẫn này giới thiệu các kỹ năng mà bạn phải có để quản lý đúng cách một máy chủ DB2 Đây là phần thứ năm trong loạt bài hướng dẫn gồm bảy phần
để giúp bạn chuẩn bị kỳ thi lấy Chứng chỉ quản trị cơ sở dữ liệu DB2 9 cho Linux, UNIX và Windows (Kỳ thi 731)
Trang 2
Các mục tiêu của bài viết
Trong hướng dẫn này, bạn sẽ:
Học cách làm thế nào để trích xuất dữ liệu bằng cách sử dụng tiện ích
EXPORT
Học cách làm thế nào để điền dữ liệu vào bảng bằng các tiện ích IMPORT
và LOAD
Xem xét các lợi thế và bất lợi của việc sử dụng tiện ích IMPORT và LOAD
Biết khi nào và làm thế nào để sử dụng các lệnh db2move, db2look và db2batch
Học cách làm thế nào để sử dụng các tiện ích RUNSTATS, REORG,
REORGCHK và REBIND và câu lệnh FLUSH PACKAGE CACHE
Tìm hiểu có thể làm những gì với Trung tâm điều khiển (Control Center) của DB2
Biết khi nào và làm thế nào để sử dụng trình cố vấn thiết kế (Design
Advisor) của DB2
Điều kiện cần có trước
Để được tham dự kỳ thi DB2 9 DBA bạn phải đã vượt qua kỳ thi 730 Cơ bản về DB2 9 Chúng tôi khuyên bạn nên xem loại bài hướng dẫn Cơ bản về DB2 trước khi bắt đầu loạt bài hướng dẫn này
Trang 3Hướng dẫn này là một trong những công cụ để giúp bạn chuẩn bị cho kỳ thi 731 Bạn cũng nên xem lại các tài nguyên ở phần cuối hướng dẫn này để biết thêm về các tiện ích của DB2 (xem mục Tài nguyên)
Mặc dù không phải tất cả các tư liệu được thảo luận trong loạt bài hướng dẫn Cơ bản về DB2 đều cần thiết để hiểu các khái niệm được mô tả trong hướng dẫn này,
ít nhất bạn nên có kiến thức cơ bản về:
Các tiện ích di chuyển dữ liệu
Các tiện ích và định dạng tệp tin
Trang 4Ba tiện ích để di chuyển dữ liệu có sẵn trong DB2:
ASCII không có dấu phân cách hoặc có độ dài cố định (ASC): Như tên
của nó hàm ý, kiểu tệp tin này chứa dữ liệu ASCII có độ dài cố định để dóng thẳng với dữ liệu cột Mỗi tệp tin ASC là một luồng ký tự ASCII bao gồm giá trị dữ liệu theo trật tự hàng và cột Các hàng trong luồng dữ liệu được ngăn cách bởi các dấu phân cách hàng, được giả sử là ký tự xuống dòng (newline)
ASCII có dấu phân cách (DEL): Đây là định dạng tệp tin phổ biến nhất
được sử dụng bởi nhiều nhà quản lý cơ sở dữ liệu để trao đổi dữ liệu Nó chứa dữ liệu ASCII và sử dụng các ký tự dấu phân cách đặc biệt để tách các giá trị cột Các hàng trong luồng dữ liệu được phân cách bằng các ký tự xuống dòng (newline) như là dấu phân cách hàng
Phiên bản PC của định dạng trao đổi tích hợp (Intergrated Exchange Format) (PC/IXF): Đây là một mô tả có cấu trúc của một bảng cơ sở dữ
liệu Định dạng tệp tin này có thể được sử dụng không chỉ để nhập khẩu dữ liệu mà còn để tạo ra một bảng chưa tồn tại trong cơ sở dữ liệu đích
Trang 5 Định dạng tờ bảng tính (Worksheet Format -WSF): Dữ liệu được lưu
trữ ở định dạng này có thể được diễn giải trong tờ bảng tính Nó có thể được sử dụng chỉ cho xuất khẩu và nhập khẩu dữ liệu
Con trỏ: Con trỏ được khai báo với truy vấn Nó chỉ có thể được sử dụng
như là đầu vào của một hoạt động nạp
Tiện ích EXPORT của DB2
Tổng quan về tiện ích EXPORT
Tiện ích EXPORT trích xuất dữ liệu từ các bảng cơ sở dữ liệu vào một tệp tin bằng cách sử dụng câu lệnh SQL SELECT hoặc XQUERY Các dữ liệu được xuất khẩu ra có thể trong các định dạng tệp tin DEL, IXF hoặc WSF Người ta khuyến cáo rằng bạn nên gồm thêm mệnh đề MESSAGES vào thao tác xuất khẩu dữ liệu
để bắt các lỗi, các cảnh báo và các thông điệp thông tin trong quá trình xuất khẩu
Để gọi thực hiện thành công tiện ích EXPORT bạn phải có các quyền SYSADM hoặc DBADM, hoặc các đặc quyền CONTROL hoặc SELECT trên các bảng hoặc các khung nhìn được truy cập trong lệnh EXPORT
Với sự hỗ trợ mới để kiểm soát truy cập dựa trên nhãn (LBAC) được đưa vào phiên bản 9.1 của DB2, bạn cần phải chú ý đến các ủy nhiệm LBAC của bạn, nó
có thể cho phép hoặc không cho phép bạn truy cập vào các hàng và/hoặc cột được bảo vệ Khi xuất khẩu dữ liệu từ một bảng có các hàng được bảo vệ, các ủy nhiệm LBAC của bạn có thể giới hạn số hàng được xuất ra Các hàng mà bạn không có quyền truy cập đọc sẽ không được xuất khẩu ra Không có thông báo lỗi hoặc cảnh báo nào Tuy nhiên, nếu ủy nhiệm LBAC của bạn không cho phép đọc từ một hay
Trang 6nhiều cột được bảo vệ bao gồm trong lệnh xuất khẩu, lệnh xuất sẽ thất bại và báo lỗi
Chúng ta hãy xem xét một ví dụ xuất khẩu đơn giản Lệnh dưới đây xuất kết quả của câu lệnh SELECT vào một tệp tin có định dạng DEL Tệp tin thông điệp
msg.out ghi lại các thông tin hữu ích cũng như bất kỳ lỗi hay cảnh báo nào gặp phải :
EXPORT TO myfile.del OF DEL
MESSAGES msg.out
SELECT staff.name, staff.dept, org.location
FROM org, staff
WHERE org.deptnumb = staff.dept;
Biến tố kiểu tệp tin
Trong ví dụ thảo luận ở phần trên, dữ liệu được trích xuất đến một tệp tin có định dạng DEL Theo mặc định, các giá trị cột được phân cách bằng dấu phẩy (,) và chuỗi ký tự được bao bọc bằng cặp dấu nháy kép (") Điều gì sẽ xảy ra nếu các dữ liệu được trích xuất cũng đã có dấu phẩy và nháy kép? Tiện ích nhập khẩu và tiện ích nạp (load) sẽ không thể xác định được ký hiệu nào là dữ liệu thực tế và ký hiệu
Trang 7nào là dấu phân cách Để tuỳ chỉnh cách tiện ích EXPORT hoạt động như thế nào, bạn có thể sử dụng mệnh đề MODIFIED BY và chỉ rõ bạn muốn thay đổi cái gì với các biến tố (modifiers) kiểu tệp tin Lệnh EXPORT với mệnh đề MODIFIED
Bạn có thể tìm thấy một liệt kê đầy đủ các biến tố kiểu tệp tin trong Chỉ dẫn tham
khảo lệnh (Command Reference Guide), ở mục EXPORT Một số biến tố thường
được sử dụng được liệt kê ở đây để làm ví dụ:
Trang 8o Xác định x, một chuỗi ký tự ASCII, là trang mã mới của dữ liệu đầu
ra Trong quá trình hoạt động xuất khẩu dữ liệu, dữ liệu ký tự được chuyển đổi từ trang mã ứng dụng tới trang mã này
timestampformat="x"
o x là định dạng của mốc thời gian trong bảng nguồn
Ta hãy xem ví dụ sau:
EXPORT TO myfile.del OF DEL
MODIFIED BY chardel! coldel@ codepage=1208
timestampformat="yyyy.mm.dd hh:mm tt"
MESSAGES msg.out
SELECT * FROM schedule
Lệnh trên xuất khẩu dữ liệu từ bảng SCHEDULE theo định dạng DEL với các hành vi sau đây:
Các chuỗi ký tự được bao bọc bằng dấu chấm than (!)
Các cột được phân cách bởi dấu @
Các chuỗi ký tự sẽ được chuyển đổi tới trang mã 1208
Mốc thời gian do người dùng định nghĩa trong bảng SCHEDULE có định
dạng yyyy.mm.dd hh:mm tt
Trang 9
Xuất khẩu các đối tượng lớn với biến tố LOBSINFILE
Khi xuất khẩu các bảng với các cột đối tượng lớn (LOB), theo mặc định thì chỉ có
32 KB dữ liệu LOB đầu tiên được xuất khẩu Phần này của đối tượng được đặt trong cùng tệp tin giống như phần còn lại của cột dữ liệu Để xuất đầy đủ dữ liệu LOB và lưu trữ chúng trong các tệp tin khác với các dữ liệu cột khác, bạn phải sử dụng các tùy chọn LOB Trong DB2 V9.1, bạn có thể chỉ rõ bạn có muốn ghép nối nhiều giá trị LOB và xuất khẩu ra cùng một tệp tin đầu ra hay là xuất khẩu mỗi một giá trị LOB vào một tệp tin riêng biệt
Dưới đây là một lệnh EXPORT với biến tố LOBSINFILE ra lệnh cho tiện ích xuất khẩu ghi nhiều giá trị LOB vào cùng một tệp tin đầu ra
EXPORT TO file_name OF file_type
LOBS TO lobfile_directory_1, lobfile_directory_2,
LOBFILE lobfilename
MODIFIED BY LOBSINFILE
MESSAGES message_file
select_statement
Trang 10Mệnh đề LOBS TO qui định các thư mục nơi mà các tệp tin LOB sẽ được lưu trữ Nếu không có mệnh đề LOBS TO thì dữ liệu LOB được gửi đến thư mục làm việc hiện tại Từ lệnh trên bạn hãy lưu ý rằng ta có thể chỉ định nhiều hơn một đường dẫn làm các thư mục đích của tệp tin LOB Sẽ có ít nhất một tệp tin cho mỗi
đường dẫn LOB, và mỗi tệp tin sẽ chứa ít nhất một LOB
Có lẽ sẽ hữu ích nếu ta nhận biết các tệp tin LOBFILE đã trích xuất với các tên tệp tin do người sử dụng định nghĩa Mệnh đề LOBFILE có thể được sử dụng cho mục đích này Mỗi tệp tin LOB sẽ có một số tuần tự làm phần mở rộng của tệp tin (ví dụ: lobfile.001, lobfile.002, lobfile.003, v.v )
Khi một trong hai lựa chọn LOBS TO hoặc LOBFILE được chỉ định, thì hành vi của lựa chọn LOBSINFILE sẽ được kích hoạt ngầm Tuy nhiên, sẽ tốt hơn nếu chỉ
rõ tường minh biến tố LOBSINFILE để tránh nhầm lẫn với hành vi của biến tố LOBSINSEPFILES sẽ được thảo luận ở phần sau
Định tố vị trí của LOB
Khi xuất các đối tượng lớn với biến tố LOBSINFILE thì một định tố vị trí của LOB (LLS) được tạo ra và được lưu giữ trong tệp tin xuất khẩu đầu ra LLS là một chuỗi được sử dụng để chỉ nơi dữ liệu LOB có thể được tìm thấy Nó có định dạng
là filename.ext.lob.nnn.mmm/ Ta hãy xem xét định dạng này chi tiết hơn:
filename.ext.lob là tên của tệp tin có chứa các dữ liệu LOB ext là số tuần
tự, như được nói ở phần trên
nnn là khoảng chừa trống của đối tượng lớn bên trong tệp tin LOB tính bằng byte
Trang 11 mmm là chiều dài của đối tượng lớn tính bằng byte
Lấy ví dụ, một LLS có tên là resume.001.lob.1257.2415/ cho ta biết rằng đối tượng lớn nằm ở tệp tin resume.001.lob, dữ liệu LOB này thực tế bắt đầu sau một khoảng chừa trống có kích thước là 1.257 byte và nó dài 2.415 byte
Để minh họa rõ ràng LLS được sử dụng như thế nào, bạn hãy xem ví dụ dưới đây
EXPORT TO empresume.del DEL
Xuất khẩu các đối tượng lớn với biến tố LOBSINSEPFILES
Như đã được đề cập ở các phần trước, bạn cũng có thể chọn để xuất dữ liệu LOB đầy đủ và lưu trữ mỗi dữ liệu đó vào các tệp tin riêng biệt Các tùy chọn LOB được miêu tả ở phần trước vẫn như cũ, trừ khi biến tố LOBSINSEPFILES được sử dụng thay thế
Trang 12Dưới đây là một ví dụ với biến tố này
EXPORT TO empresume.del DEL
LOBS TO d:\lob1\
LOBFILE resume
MODIFIED BY LOBSINSEPFILES
MESSAGES msg.out
SELECT * FROM emp_resume
Với lệnh EXPORT này, tiện ích EXPORT sẽ ghi dữ liệu LOB vào các tệp tin với tên resume.ext.lob (tức là resume.001.lob, resume.002.lob, resume.003.lob, v.v ), chúng đều nằm trong đường dẫn LOB d:\lob1
Xuất khẩu dữ liệu XML
Với việc đưa thêm hỗ trợ XML nguyên sinh vào DB2 phiên bản 9.1, tiện ích xuất khẩu cũng được mở rộng để hỗ trợ XML Nếu bạn định xuất khẩu một bảng (được định nghĩa với dữ liệu XML) mà không chỉ định bất kỳ tùy chọn nào liên quan tới XML, thì dữ liệu XML liên quan sẽ được ghi vào một tệp tin hoặc nhiều tệp tin,
Trang 13tách biệt với phần còn lại của dữ liệu quan hệ được xuất khẩu Ta hãy xem một ví
dụ Lệnh EXPORT sau đây được phát ra trên bảng PRODUCT có định nghĩa một cột XML:
EXPORT TO prodexport.del DEL
MESSAGES msg.out
SELECT * FROM product
Trong ví dụ này tiện ích xuất khẩu sẽ tạo ra hai tệp tin đầu ra Một trong hai tệp tin
là prodexport.del, chứa dữ liệu quan hệ của bảng cũng như định tố dữ liệu XML (XML data specifier - XDS)
XDS là một chuỗi ký tự được biểu diễn như một thẻ XML có tên là "XDS" Nó có các thuộc tính mô tả các thông tin về dữ liệu XML thực tế có trong cột Dưới đây
là các thuộc tính mà bạn có thể thấy trong một chuỗi XDS
FIL xác định tên của tệp tin chứa dữ liệu XML
OFF xác định khoảng chừa trống tính bằng byte của dữ liệu XML trong tệp tin được đặt tên theo thuộc tính FIL
LEN xác định chiều dài tính bằng byte của dữ liệu XML trong tệp tin được đặt tên theo thuộc tính FIL
Trang 14 SCH xác định mã định danh SQL phân biệt đầy đủ của lược đồ XML được
sử dụng để xác nhận hợp lệ tài liệu XML Thuộc tính này sẽ được thảo luận trong phần sau
Từ nội dung của tệp tin prodexport.del ở trên, bạn có thể thấy rằng dữ liệu XML đầu tiên được lưu giữ trong tệp tin prodexport.del.001.xml bắt đầu sau một khoảng chừa trống có kích thước là 0 byte và nó có chiều dài là 252 byte
Tệp tin khác được tạo ra bởi tiện ích xuất khẩu trong ví dụ này là
prodexport.del.001.xml, nó chứa nội dung XML Mọi dữ liệu XML được xuất khẩu được ghép nối lại và được ghi vào tệp tin này Sau đây là nội dung của tệp tin prodexport.del.001.xml để cung cấp cho bạn thêm hiểu biết về nó
Xuất khẩu dữ liệu XML với tuỳ chọn và biến tố XML
Giống như xuất khẩu các đối tượng lớn, bạn có thể chỉ định một hoặc nhiều đường dẫn, nơi các tài liệu XML được xuất khẩu sẽ được chuyển tới và phần tên cơ sở của các tệp tin đầu ra Ta hãy xem ví dụ sau:
EXPORT TO prodexport.del DEL
XML TO d:\xmlpath
XMLFILE proddesc
MODIFIED BY XMLINSEPFILES XMLNODECLARATION XMLCHAR
Trang 15XMLSAVESCHEMA
MESSAGES msg.out
SELECT * FROM product
Ở đây các dữ liệu quan hệ của bảng PRODUCT được xuất khẩu sang tệp tin
prodexport.delfile Sau đó mọi dữ liệu XML sẽ được ghi vào thư mục được chỉ định trong mệnh đề XML TO d:\xmlpath Các tệp tin với dữ liệu XML được đặt tên là proddesc.ext.xml với ext là số tuần tự (ví dụ: proddesc.001.xml,
proddesc.002.xml, proddesc.003.xml, v.v ) Phần tên cơ sở này được định nghĩa bởi tùy chọn XMLFILE
Bạn cũng có thể nhận thấy rằng một vài biến tố được sử dụng trong ví dụ này Sau đây là bảng tóm tắt của tất cả các biến tố liên quan đến XML
XMLINSEPFILES làm cho tiện ích xuất khẩu ghi từng tài liệu XML được xuất khẩu vào một tệp tin XML riêng biệt
XMLNODECLARATION biểu thị rằng dữ liệu XML được xuất khẩu mà không có thẻ khai báo XML Theo mặc định, thẻ khai báo XML được ghi tại phần đầu của một tài liệu XML, nó bao gồm một thuộc tính về bảng mã
XMLCHAR biểu thị rằng dữ liệu XML được viết bằng trang mã
(codepage) ký tự Theo mặc định, dữ liệu XML được viết bằng bộ mã Unicode Khi biến tố này được sử dụng, thì giá trị của biến tố kiểu tệp tin của trang mã hoặc trang mã của ứng dụng sẽ được sử dụng thay thế
Trang 16 XMLGRAPHIC biểu thị rằng dữ liệu XML được xuất khẩu sẽ được mã hóa bằng trang mã UTF-16, bất kể biến tố kiểu tệp tin của trang mã hoặc trang
mã của ứng dụng là gì Bạn lưu ý rằng tùy chọn XMLGRAPHIC không được sử dụng trong ví dụ này
Tùy chọn cuối cùng mà chúng tôi giới thiệu ở đây là XMLSAVESCHEMA Khi một tài liệu XML đã được chèn vào, thì nó có thể được xác nhận hợp lệ bởi một lược đồ XML Tùy chọn XMLSAVESCHEMA ra lệnh cho tiện ích xuất khẩu cũng ghi lưu các thông tin của lược đồ XML cho tất cả các dữ liệu XML được xuất khẩu Mã định danh SQL phân biệt đầy đủ của lược đồ đó sẽ được lưu trữ như là một thuộc tính SCH bên trong định tố dữ liệu XML (XDS) tương ứng Bạn lưu ý rằng nếu tài liệu XML được xuất khẩu không được xác nhận hợp lệ bởi lược
đồ XML hoặc đối tượng lược đồ không còn tồn tại trong cơ sở dữ liệu, thuộc tính SCH sẽ không được bao gồm trong XDS tương ứng
Sau đây là kết quả của ví dụ về tiện ích xuất khẩu nêu trên
Xuất khẩu dữ liệu XML bằng một truy vấn XQuery
Lệnh EXPORT cũng cho phép bạn chỉ định một câu lệnh XQuery để cho tiện ích xuất khẩu ghi kết quả của XQuery thành một tệp tin XML Chúng ta hãy xem xét
ví dụ sau:
EXPORT TO custexport.del DEL
XML TO d:\xmlpath
Trang 17và các biến tố đang được thảo luận áp dụng được cho câu lệnh XQuery Do đó, ví
dụ này sẽ tạo ra các tài liệu XML riêng biệt cho mỗi kết quả của XQuery Các tệp tin nằm tại địa chỉ d:\xmlpath và chúng được đặt tên là custphone.ext.xml với ext
là số tuần tự Ngoài ra, trong các tài liệu không có thẻ khai báo XML
Sau đây là nội dung của một trong những tài liệu XML được xuất khẩu
Xuất khẩu dữ liệu từ Trung tâm điều khiển
Ngoài việc thi hành lệnh EXPORT từ dòng lệnh của DB2, bạn có thể xuất khẩu dữ liệu bằng cách sử dụng Trung tâm điều khiển Với công cụ này, bạn có thể chỉ định tất cả các tùy chọn và các mệnh đề được hỗ trợ bởi tiện ích xuất khẩu chẳng hạn như các đối tượng lớn và dữ liệu XML Như được minh hoạ trong hình dưới
Trang 18đây, phiếu Schedule cho phép bạn tạo một tác vụ và một lịch trình mà tiện ích xuất khẩu sẽ chạy tại một thời điểm đã cho
Tiện ích IMPORT của DB2
Tổng quan về tiện ích IMPORT
Tiện ích IMPORT điền dữ liệu vào một bảng với một tệp tin đầu vào kiểu ASC, DEL, IXF hoặc WSF Đích có thể là một bảng, một bảng được định kiểu hoặc một khung nhìn Tuy nhiên, việc nhập khẩu dữ liệu vào các bảng hệ thống, bảng tạm thời, và bảng truy vấn được vật chất hóa là không được phép Tôi cũng khuyên bạn nên sử dụng mệnh đề MESSAGES để cho các thông báo lỗi, các cảnh báo, các thông điệp báo tin được ghi lại
Để nhập khẩu thành công dữ liệu, bạn phải có quyền SYSADM hoặc DBADM, hoặc các đặc quyền ưu tiên (SELECT, INSERT, CONTROL hoặc CREATETAB) trên bảng đích hoặc trên cơ sở dữ liệu, tùy thuộc vào bạn sử dụng tùy chọn nào
Để nhập khẩu dữ liệu vào một bảng có các hàng và cột được bảo vệ, bạn phải có
ủy nhiệm LBAC cho phép truy cập viết vào tất cả các dữ liệu được bảo vệ trong bảng Ngoài ra, việc nhập khẩu dữ liệu vào bảng với các hàng được bảo vệ đòi hỏi rằng ủy nhiệm LBAC của bạn là một phần của chính sách bảo mật bảo vệ bảng Lệnh IMPORT được hiển thị dưới đây với năm tùy chọn khác nhau:
IMPORT FROM file_name OF file_type
Trang 20 Tùy chọn CREATE tạo ra bảng đích và các chỉ mục của nó, sau đó nó nhập khẩu dữ liệu vào bảng mới Tùy chọn này chỉ hỗ trợ định dạng tệp tin
PC/IXF Bạn cũng có thể chỉ định tên của vùng bảng, nơi bảng mới sẽ được tạo ra
Trang 21nhập khẩu Tùy chọn COMMITCOUNT bắt buộc phải giao kết COMMIT sau khi một số bản ghi đã được nhập khẩu Bạn cũng có thể chỉ định tùy chọn
AUTOMATIC tùy chọn này cho phép tiện ích IMPORT xác định một cách nội bộ khi nào cần thực hiện một giao kết Tiện ích sẽ xem xét và phát lệnh giao kết để tránh tình trạng đầy nhật ký hoặc để tránh việc leo thang mức khóa (N.D: Leo thang mức khóa (lock escalation) là quá trình giảm số lượng khóa bằng cách chuyển đối nhiều khóa mức chi tiết mịn hơn thành ít khóa hơn nhưng mức thô hơn) Dưới đây là một ví dụ về cách bạn có thể sử dụng tùy chọn
COMMITCOUNT:
IMPORT FROM myfile.ixf OF IXF
COMMITCOUNT 500
MESSAGES msg.out
INSERT INTO newtable
Nếu vì một lý do nào đó mà lệnh trên không thực hiện được trong quá trình thi hành của nó, thì bạn có thể sử dụng tệp tin thông điệp để xác định hàng cuối cùng
đã được nhập khẩu thành công và được giao kết Sau đó bạn có thể khởi động lại việc nhập khẩu dữ liệu với tùy chọn RESTARTCOUNT Lưu ý rằng hành vi của tùy chọn SKIPCOUNT là giống với hành vi của tùy chọn RESTARTCOUNT Trong lệnh bên dưới, tiện ích sẽ bỏ qua 30.000 bản ghi đầu tiên trước khi bắt đầu hoạt động nhập khẩu dữ liệu
Trang 22IMPORT FROM myfile.ixf OF IXF
COMMITCOUNT 500 RESTARTCOUNT 30000 ROWCOUNT 100000 MESSAGES msg.out
INSERT INTO newtable
Trong ví dụ này, bạn lưu ý rằng tuỳ chọn ROWCOUNT cũng được sử dụng Nó chỉ rõ số lượng bản ghi vật lý phải được nhập khẩu Bởi vì tùy chọn
RESTARTCOUNT được sử dụng, nên tiện ích nhập khẩu sẽ bỏ qua 30.000 bản ghi đầu tiên và nhập khẩu 100.000 bản ghi kế tiếp vào bảng
Theo mặc định, tiện ích nhập khẩu sẽ giành lấy một khóa giành riêng trên bảng đích trước khi bất kỳ hàng nào được chèn vào Khóa giành riêng được giải phóng ngay sau khi hoạt động nhập khẩu hoàn thành Đây là hành vi của tùy chọn
ALLOW NO ACCESS Để cho phép nhiều ứng dụng đồng thời truy cập được vào bảng dữ liệu, bạn có thể sử dụng tùy chọn ALLOW WRITE ACCESS Lưu ý rằng tùy chọn này không tương thích với các tùy chọn nhập khẩu REPLACE, CREATE hoặc REPLACE_CREATE Dưới đây là một ví dụ về tùy chọn ALLOW WRITE ACCESS
IMPORT FROM myfile.ixf OF IXF
ALLOW WRITE ACCESS
MESSAGES msg.out
Trang 23INSERT INTO newtable
Nhập khẩu dữ liệu XML
Để nhập khẩu tệp tin XML, hãy sử dụng tùy chọn XML FROM để chỉ định một hoặc nhiều đường dẫn đến nơi các tệp tin XML được lưu trữ Nếu không, tiện ích nhập khẩu sẽ tìm kiếm các tệp tin XML trong thư mục hiện hành Bạn có thể chọn cách thức phân tích cú pháp các tài liệu XML như thế nào; loại bỏ khoảng trống hay giữ nguyên khoảng trống Nếu tùy chọn XMLPARSE không được chỉ rõ, thì hành vi phân tích cú pháp các tài liệu XML sẽ được quyết định bởi mục đăng ký đặc biệt CURRENT XMLPARSE OPTION Dưới đây là một ví dụ của các tuỳ chọn XML FROM và XMLPARSE
IMPORT FROM myfile.ixf OF IXF
Trang 24Khi bạn chèn hoặc cập nhật một tài liệu XML, có thể bạn muốn xác định xem liệu cấu trúc, nội dung, và các kiểu dữ liệu của các tài liệu XML có hợp lệ không Tiện ích nhập khẩu cũng hỗ trợ xác nhận hợp lệ tài liệu XML thông qua việc sử dụng tùy chọn XMLVALIDATE Có ba phương pháp có thể dùng:
USING XDS - Bạn hãy nhớ lại rằng bạn có thể xuất khẩu thông tin về lược
đồ XML và lưu nó vào trong thuộc tính SCH của định tố dữ liệu XML (XML Data Specifier -XDS) Giá trị của thuộc tính SCH sẽ được sử dụng
để thực hiện xác nhận hợp lệ Nếu không có thuộc tính SCH trong XDS, thì một trong các tùy chọn DEFAULT, IGNORE hoặc MAP sẽ được xem xét
đồ XML trong các tài liệu XML nguồn
IMPORT FROM myfile.ixf OF IXF
Trang 25MAP (S1.SCHEMA_A, S1.SCHEMA_B)
COMMITCOUNT 500 RESTARTCOUNT 30000
MESSAGES msg.out
INSERT INTO newtable
Câu lệnh IMPORT trên sẽ:
Chèn dữ liệu từ myfile.ixf và tệp tin XML ở địa chỉ d:\xmlpath
Giữ nguyên các khoảng trống khi phân tích cú pháp tài liệu XML
Mỗi tài liệu XML được xác nhận hợp lệ bằng cách sử dụng các thông tin của lược đồ được xác định trong thuộc tính SCH của XDS Tuy nhiên, nếu XDS cho bất kỳ hàng cụ thể nào không chứa thuộc tính SCH, thì lược đồ S1.SCHEMA_A sẽ được sử dụng để thay thế
Đối với thuộc tính SCH được chỉ rõ là S1.SCHEMA_X, hoặc
S1.SCHEMA_Y, hoặc S1.SCHEMA_Z, thì việc xác nhận hợp lệ sẽ không được thực hiện đối với các tài liệu XML nhập khẩu
Nếu thuộc tính SCH được chỉ rõ là S1.SCHEMA_A, thì nó sẽ được ánh xạ tới S1.SCHEMA_B Lưu ý rằng mặc dù mệnh đề DEFAULT xác định S1.SCHEMA_A, nhưng bất kỳ ánh xạ tiếp theo nào sẽ không được thực hiện
Tiện ích nhập khẩu sẽ phát lệnh giao kết sau mỗi 500 hàng được nhập khẩu
Trang 26 Hoạt động nhập khẩu được bắt đầu từ bản ghi 30.001 30.000 bản ghi đầu tiên được bỏ qua
Mọi thông báo lỗi, cảnh báo, và thông điệp báo tin đều được ghi vào tệp tin msg.out
Dữ liệu mới được chèn (hoặc được nối vào cuối) vào newtable
Ví dụ này chỉ mang đến cho bạn một số ý tưởng về cách mà tài liệu XML được nhập khẩu có thể được xác nhận hợp lệ như thế nào Có rất nhiều ví dụ ở Trung tâm thông tin của DB2 chứng minh sức mạnh của tùy chọn XMLVALIDATE
Biến tố kiểu tệp tin
Tiện ích IMPORT cũng hỗ trợ các biến tố kiểu tệp tin để tùy chỉnh hoạt động nhập
khẩu Bạn có thể tìm thấy một danh sách đầy đủ các biến tố này trong DB2
Command Reference, mục IMPORT Ở đây phác thảo một vài biến tố:
Trang 27o Lược bớt bất kỳ khoảng trống sau đuôi nào khi nạp dữ liệu vào một trường có độ dài biến đổi
lobsinfile
o Biểu thị rằng dữ liệu LOB đang được nhập khẩu Tiện ích sẽ kiểm tra mệnh đề LOBS FROM để có đường dẫn của các tệp tin LOB đầu vào
Dưới đây là một ví dụ về sử dụng các biến tố kiểu tệp tin ấy:
IMPORT FOR inputfile.asc OF ASC
LOBS FROM /u/db2load/lob1, /u/db2load/lob2
MODIFIED BY compount=5 lobinsfile
INSERT INTO newtable
Nhập khẩu bằng cách sử dụng Trung tâm điều khiển
Trung tâm điều khiển cung cấp các giao diện đồ họa dễ sử dụng để thực hiện các hoạt động nhập khẩu dữ liệu Tất cả các tùy chọn nhập khẩu và các biến tố tệp tin được thảo luận trong phần trước cũng có sẵn trong giao diện này
Trang 28Tiện ích LOAD của DB2
Tổng quan về tiện ích LOAD
Tiện ích LOAD là một phương thức khác để điền dữ liệu vào bảng Các trang được định dạng được ghi trực tiếp vào cơ sở dữ liệu Cơ chế này cho phép di chuyển dữ liệu hiệu quả hơn so với tiện ích IMPORT Tuy nhiên, một số hoạt động, chẳng hạn như kiểm tra tham chiếu hoặc kiểm tra các ràng buộc của bảng và gọi ra các kích hoạt (triggers) không được thực hiện bởi tiện ích LOAD
Dưới đây là cốt lõi của lệnh LOAD, các tùy chọn và biến tố khác được hỗ trợ và sẽ được giới thiệu trong phần tiếp theo của bài hướng dẫn này Để thi hành thành công lệnh này, bạn phải có các quyền như SYSADM, DBADM hoặc LOAD, hoặc các đặc quyền INSERT và/hoặc DELETE trên bảng tham gia vào việc nạp dữ liệu
Để nạp dữ liệu vào bảng có các cột được bảo vệ, bạn phải có ủy nhiệm LBAC cho phép truy cập viết vào tất cả các cột được bảo vệ trong bảng Để nạp dữ liệu vào một bảng có các hàng được bảo vệ, bạn phải được cấp một nhãn an ninh để truy cập viết, đó là một phần của chính sách an ninh bảo vệ bảng
LOAD FROM input_source OF input_type
MESSAGES message_file
[ INSERT | REPLACE | TERMINATE | RESTART ]
INTO target_tablename
Trang 29
Định dạng của một nguồn đầu vào cho tiện ích LOAD có thể là DEL, ASC,
PC/IXF, hoặc CURSOR Con trỏ là bộ kết quả được câu lệnh SELECT trả lại Hình sau là ví dụ của việc sử dụng CURSOR làm đầu vào nạp dữ liệu:
DECLARE mycursor CURSOR FOR SELECT col1,
col2, col3 FROM tab1;
LOAD FROM mycursor OF CURSOR INSERT INTO
newtab;
Đích để nạp dữ liệu phải tồn tại trước khi tiện ích khởi chạy Đích này có thể là một bảng, một bảng có định kiểu hoặc là bí danh của bảng Việc nạp các bảng có cột XML, các bảng hệ thống và bảng tạm thời không được hỗ trợ
Bạn sử dụng tùy chọn MESSAGES để thu giữ bất kỳ thông báo lỗi, cảnh báo, thông điệp báo tin nào trong quá trình nạp
Tiện ích LOAD có thể được thi hành trong bốn chế độ khác nhau:
Chế độ INSERT thêm dữ liệu đầu vào vào một bảng mà không thay đổi dữ
liệu bảng hiện có
Chế độ REPLACE xóa tất cả dữ liệu hiện tại tại một bảng và điền dữ liệu
đầu vào vào bảng đó
Trang 30 Chế độ TERMINATE chấm dứt một hoạt động nạp dữ liệu và cuộn ngược
trở lại thời điểm mà tại đó nó bắt đầu Một trường hợp ngoại lệ là nếu đã chỉ định chế độ REPLACE, thì bảng sẽ được cắt bớt
Chế độ RESTART được sử dụng để khởi động lại hoạt động nạp bị gián
đoạn trước đó Thao tác nạp sẽ tự động tiếp tục từ điểm nhất quán cuối cùng Để sử dụng chế độ này, bạn chỉ định các tùy chọn tương tự như trong lệnh LOAD trước đây nhưng với chế độ RESTART Nó cho phép tiện ích tìm tất cả các tệp tin tạm thời cần thiết được tạo ra trong quá trình nạp Do
đó, điều quan trọng là không được loại bỏ một cách thủ công bất kỳ tệp tin tạm thời nào được tạo ra từ hoạt động nạp trừ khi bạn chắc rằng chúng không cần thiết Sau khi hoạt động nạp hoàn tất mà không gặp lỗi, các tệp tin tạm thời sẽ tự động được loại bỏ Theo mặc định chúng được tạo ra trong thư mục làm việc hiện tại Bạn có thể chỉ định thư mục nơi tệp tin tạm thời được lưu trữ với tùy chọn TEMPFILES PATH
Bốn pha của một quá trình nạp
Một quá trình nạp hoàn chỉnh có bốn pha phân biệt
1 Pha nạp:
o Nạp dữ liệu vào bảng
o Thu thập các khóa chỉ mục và các thống kê về bảng
o Ghi lại các điểm nhất quán
Trang 31o Khi các hàng dữ liệu không tuân theo các định nghĩa của bảng, thì chúng được coi là dữ liệu không hợp lệ và sẽ bị từ chối (không được nạp vào bảng) Bạn sử dụng biến tố tệp tin đống rác để chỉ định tên
và vị trí của một tệp tin để ghi lại bất kỳ hàng bị từ chối nào
2 Pha xây dựng:
o Tạo ra các chỉ mục dựa trên các khóa thu thập trong giai đoạn nạp Nếu tùy chọn STATISTICS USE PROFILE được chỉ định, thì các số liệu thống kê cũng được thu thập theo lược tả đã định nghĩa cho bảng đích Lược tả này phải được tạo ra trước khi hoạt động nạp được thực thi, nếu không sẽ có cảnh báo được trả lại và không có số liệu thống kê nào được thu thập
3 Pha xóa:
o Xóa các hàng vi phạm quy tắc khóa duy nhất và đặt chúng vào bảng ngoại lệ Ngoài các dữ liệu chỉ là không phù hợp với định nghĩa của bảng đích như được mô tả ở trên, có thể có dữ liệu mà vượt qua được giai đoạn nạp nhưng vi phạm một ràng buộc duy nhất được định nghĩa trong bảng Lưu ý rằng ở đây chỉ có các hàng vi phạm quy tắc khóa duy nhất là được coi là dữ liệu sai; các ràng buộc khác không được kiểm tra vào lúc này Vì rằng loại dữ liệu đã được nạp vào bảng, nên tiện ích LOAD sẽ xóa các hàng vi phạm ở pha này Bảng ngoại lệ có thể được dùng để lưu trữ các hàng đã được xóa để bạn có thể quyết định sẽ làm gì với chúng sau khi hoạt động nạp hoàn tất Nếu không có bảng ngoại lệ được chỉ định, thì các hàng vi phạm sẽ bị xóa mà không còn dấu vết gì Bảng ngoại lệ sẽ được thảo luận chi tiết hơn ở phần dưới đây
o Ghi lại các thông điệp trong tệp tin thông điệp
Trang 324 Pha sao chép chỉ mục:
o Nếu tùy chọn ALLOW READ ACCESS được chỉ định với tùy chọn USE TABLESPACE thì dữ liệu chỉ mục được sao chép từ vùng bảng tạm thời của hệ thống đến vùng bảng nơi chỉ mục sẽ nằm ở đó
Bảng ngoại lệ là bảng do người dùng định nghĩa, bảng này phải có cùng định
nghĩa cột như của bảng đích đang được nạp Nếu ít nhất một trong các cột đó không có mặt trong bảng ngoại lệ, thì các hàng vi phạm sẽ bị hủy Chỉ có thể được thêm vào hai cột bổ sung ở phần cuối của bảng: một cột mốc thời gian để ghi lại khi nào hàng được chèn vào, và một cột CLOB để lưu trữ các lý do (hoặc thông điệp) tại sao dòng đó bị coi là sai
Bạn sẽ nhận thấy rằng một số khái niệm trình bày tại phần này không được chi tiết Chúng ta sẽ sử dụng một số ví dụ và ghép chúng cùng với nhau trong phần còn lại của mục này
Ví dụ về nạp dữ liệu
Ta hãy xem xét một ví dụ để minh họa các bước của một quá trình nạp:
LOAD FROM emp.ixf OF IXF
MESSAGES msg.out
MODIFIED BY DUMPFILE=c:\emp.dmp
Trang 33TEMPFILES PATH d:\tmp
INSERT INTO employee
FOR EXCEPTION empexp
Trong sơ đồ trên, mục (1) cho thấy nội dung của tệp tin nguồn đầu vào
Bảng đích EMPLOYEE hiển thị trong mục (2) được tạo ra với định nghĩa cột sau đây:
o Cột đầu tiên phải là duy nhất
o Cột cuối cùng là một cột số và không được gán giá trị NULL
Bảng ngoại lệ, EMPEXP tại mục (3), được tạo ra với cùng các cột như của bảng EMPLOYEE cũng như với các cột mốc thời gian và thông điệp
Ở pha nạp, tất cả các dữ liệu từ tệp tin đầu vào được nạp vào bảng đích
EMPLOYEE - ngoại trừ hai dòng đánh dấu màu hồng, vì chúng không phù hợp với định nghĩa cột NOT NULL và NUMERIC Vì biến tố DUMPFILE được chỉ
rõ, nên chúng được ghi lại vào tệp tin C:\emp.dmp
Ở pha xóa, hai hàng được đánh dấu màu vàng được xóa khỏi bảng đích
EMPLOYEE và được chèn vào bảng ngoại lệ EMPEXP Điều này xảy ra do sự vi phạm quy tắc duy nhất của cột đầu tiên trong bảng đích EMPLOYEE
Tại phần cuối của pha nạp, bạn nên kiểm tra các tệp tin thông điệp, tệp đống rác và bảng ngoại lệ, sau đó quyết định cách để xử lý các hàng bị từ chối Nếu quá trình nạp hoàn tất, thì các tệp tin tạm thời được tạo ra tại địa chỉ D:\tmp được xóa đi