Posted on 2009-03-25 13:31
Prayer 閱讀(583)
評論(0) 編輯 收藏 引用 所屬分類:
DB2
DB2:數(shù)據(jù)的傳輸
Db2提供了如下幾個工具用來傳輸數(shù)據(jù):
? Export:Export可以將一個select語句所選擇的數(shù)據(jù)輸出到指定格式的文件;
? Import:與Export相反,Import工具從文件讀取數(shù)據(jù),并利用Insert語句將數(shù)據(jù)插入到表格之中。值得注意的一點是,執(zhí)行Import指令的過程中,平常單獨支持Insert語句所觸發(fā)的限制檢查和觸發(fā)器同樣也會工作;
? Load:與Import類似,Load工具同樣用來加載數(shù)據(jù),只是它不使用Insert語句,它直接加載數(shù)據(jù)頁,所以它的數(shù)度更快。在Load過程中,表格上定義的各種限制和觸發(fā)器將暫時實效,Load數(shù)據(jù)之后,要使用SET INTEGRITY指令檢查剛剛加載的數(shù)據(jù);
? db2move:此工具用來批量移動多個表格;
Export,Import和Load可以使用一下4種格式的數(shù)據(jù)文件:
? DEL或者ASC:這兩種格式均為文本格式,只包含數(shù)據(jù),不包含表結構的定義;
? IXF:這種格式的文件同時包含數(shù)據(jù)和表結構的定義,索引和主鍵,但是不包含外鍵,限制和觸發(fā)器等;
? WSF:這種格式的文件用來與Lotus 1-2-3等電子表格交換數(shù)據(jù);
Export:
執(zhí)行Export需要SYSADM,SYSCTRL,或者SYSMAINT的權利,或者是對輸出的表格或者視圖有CONTROL的權限;
使用Export的例子如下:
? EXPORT TO staff.del OF DEL MESSAGE export.msg
SELECT * FROM Vicky.staff
? EXPORT TO Vicky.ixf OF IXF
METHOD N ( name, dept, salary ) MESSAGE export.msg
SELECT name, dept, salary
FROM Vicky.staff
WHERE salary >= 20000
Import:
執(zhí)行Import指令可以使用下列幾種模式:
? INSERT:目標表格必須已經存在,現(xiàn)有表格的數(shù)據(jù)頁不會受到影響;
? INSERT_UPDATE:目標表格必須存在,而且定義有主鍵。如果新輸入的數(shù)據(jù)與現(xiàn)有數(shù)據(jù)的主鍵相等,則更新,否則插入;
? REPLACE:目標表格必須存在,所有現(xiàn)存的數(shù)據(jù)將被刪除;
? CREATE(僅適于IXF文件):目標表格不存在,Import指令會利用IXF文件種的信息建立表格與索引,并插入數(shù)據(jù);
? REPLACE_CREATE(僅適于IXF文件):如果目標表格存在,現(xiàn)存數(shù)據(jù)被刪除,被新數(shù)據(jù)所取代;如果目標表格不存在,則同CREATE模式;
Import指令根據(jù)不同的數(shù)據(jù)文件格式,需要使用METHOD選項指定數(shù)據(jù)列字段以及起位置;
? METHOD L:對于ASC格式的文件,必須指定每個字段的起始與結束位置;例如:
IMPORT FROM myfile.asc OF ASC METHOD L ( 1 10, 12 15 )
INSERT INTO vicky.staff
? METHOD N:對于IXF文件,指定字段的名稱;例如:
IMPORT FROM myfile.ixf OF IXF METHOD N ( c1, c2, c3 )
INSERT INTO vicky.staff ( c1, c2, c3 )
? METHOD P:對于DEL和IXF文件,指定字段的號碼;例如:
IMPORT FROM datafile1.del OF DEL METHOD P ( 1, 3, 4)
REPLACE INTO vicky.staff ( c1, c3, c4)
Import使用INSERT語句插入數(shù)據(jù),該操作受事務日志所保護,可以在Import語句中使用commitcount選項指定每個事務的插入記錄數(shù),如:
? IMPORT FROM order_item.ixf OF IXF COMMITCOUNT 1000
MESSAGE import.msg INSERT INTO vicky.order_item
還可以使用RESTARTCOUNT指定從第幾筆數(shù)據(jù)開始導入,如從10001筆開始導入:
? IMPORT FROM order_item.ixf of IXF RESTARTCOUNT 10000
MESSAGE import.msg INSERT INTO vicky.order_item
Load:
Load工具不單可以從文件加載數(shù)據(jù),還可以從Pipe中或者是磁帶機等外設中加載數(shù)據(jù);使用Load時要注意如下幾點:
? Load數(shù)據(jù)之前,表格必須存在;
? Load數(shù)據(jù)前先建立索引;
? Load過程不受事務日志保護,可以指定COPY YES選項使Load結束自動進行備份;
? Load數(shù)據(jù)后需要用SET INTEGRITY語句將不合乎限制的數(shù)據(jù)放入例外表格;
? Load過程中觸發(fā)器不起作用;
? Load只有在REPLACE模式下才可以自動收集統(tǒng)計信息,此時STATISTICS YES為默認選項;
? Load使用sqllib/tmp為默認臨時空間,可以使用TEMPFILE PATH指定其他目錄;
? 在SMP環(huán)境中Load可以指定使用多個CPU;
? 加載過程中可以使用QUERY指令查看加載進度,如:
LOAD QUERY TABLE vicky.staff
使用Load的例子如下:
? LOAD FROM tools.ixf OF IXF MESSAGE load.msg
INSERT INTO vicky.tools
FOR EXCEPTION vicky.badtools
? LOAD FROM tools.ixf OF IXF MESSAGE load.msg
REPLACE INTO vicky.tools
STATISTICS YES WITH DISTRIBUTION AND DETAILED INDEXES ALL
COPY YES TO /opt/backup
Load建立索引時可以指定如下幾種模式(INDEXING MODE):
? REBUILD:對表格中的所有數(shù)據(jù)重建索引結構;
? INCREMENTAL:將加載數(shù)據(jù)的索引列加入原有的索引結構中;
? AUTOSELECT:由Load自動選擇采用REBUILD或者INCREMENTAL;
? DEFERRED:延遲建立索引結構(至于什么時候建立索引取決與INDEXREC參數(shù);
SET INTEGRITY的例子:
? SET INTIGRITY FOR vicky.tools, vicky.staff
IMMEDIATE CHECKED
FOR EXCEPTION IN vicky.tools USE vicky.badtools,
IN vicky.staff USE vicky.badstaff
? SET INTEGRITYCONSTRAINTS FOR vicky.staff ALL IMMEDIATE UNCHECKED