例五:把導出信息保存在消息文件中。

export to d:\awards.ixf of ixf messages d:\msgs.txt select * from staff where dept = 20

這個例子把staff表中dept=20的數據導出到d:\awards.ixf文件中,所有的導出信息都保存在d:\msgs.txt文件中(無論是成功、警告還是失敗信息),這樣,管理員可以通過觀察信息文件找到問題所在。

例六:給導出數據列重命名。

export to d:\awards.ixf of ixf method n(c1,c2,c3,c4,c5,c6,c7) messages d:\msgs.txt select * from staff where dept=20

在默認情況下,導出的每一列數據以表中對應的字段名自動命名,我們可以通過method n子句給每一列重新命名,需要注意的是,這個子句只在ixf和wsf格式文件中有效,在文本文件中不能使用。

數據的導入

例七:把C盤根目錄下的org.txt文件中的數據導入到org表中

import from c:org.txt of del insert into org

導入命令和導出命令的格式基本上處于對應的關系,import對應export,from對應to,文件名和文件格式代表的含義相同,但是導入命令支持ASC格式的文件,而導出命令不支持。另外,在導出命令的最后是一個SQL語句,用于選擇要導出的數據,而導入命令最后不是SQL語句,而是插入數據的方式以及目標表名稱。

例八:從ASC格式文件中導入數據

import from c:org2.txt of asc method l(1 5,6 19,20 25,26 37,38 50) insert into org

其中 method l 子句用于指定文本文件中每一個字段的起始位置和終止位置,每個起始位置和終止位置間用空格分開,字段之間用逗號分開。 除了l方法之外,還有n方法和p方法,下面會敘述。 www.3s8.cn

例九:利用n方法導入數據,并且創建新表。

首先導出一個用例文件:

export to d:org.ixf of ixf method n(a,b,c,d,e) select * from org

這樣org.ixf文件中有五列數據,對應的列名分別為a、b、c、d、e

然后在從該文件中導入數據到一個新表中

import from d:org.ixf of ixf method n(d,e,b) replace_create into orgtest

該命令從文件中選取三列導入到表中,順序可以不按照文件中原有的列的順序。replace_create方式的敘述見下。

插入方式有:

INSERT 方式——在表中現有數據的基礎之上追加新的數據。

INSERT_UPDATE 方式——這種方式只能用于有主鍵的表,如果插入的數據與原有數據主鍵不沖突,則直接插入,如果主鍵沖突,則用新的數據代替原有數據。

REPLACE 方式——先把表中現有的數據都刪除,然后向空表中插入數據。

REPLACE_CREATE 方式——表示如果表存在,則先把表中的數據都刪除,然后向空表中插入數據;如果表不存在,則先根據文件中的字段創建表,然后再向表中插入數據。這種方式只能把IXF格式的文件中的數據插入到表中。 www.3s8.cn

例十:利用p方法導入數據

import from d:org.ixf of ixf method p(4,5,2) replace into orgtest

該例子執行的效果和例九類似,只是把n方法換成了p方法,p方法后面的列表中指明列的序號即可,不需要指明列名。另外,此例中使用了replace方式插入數據,這會把表中現有的數據都刪除,然后向空表中插入數據。

例十一:關于空值的導入

對于ixf格式的文件,導入空值非常方便,因為里面已經記錄了空值的信息。但是,對于ASC格式文件就有一定的難度了,因為DB2會直接插入空格,而不是空值。為此,DB2提供了一個子句進行控制:NULL INDICATORS

import from c:org2.txt of asc MODIFIED BY nullindchar=# method l(1 5,6 19,20 25,26 37,38 50) NULL INDICATORS(0,0,0,0,38 ) replace into org

在這個例子中,NULL INDICATORS子句后面是一個列表,表示前面四個字段都不會存在空值,而第五個字段從38列開始,可能存在空值,而 MODIFIED BY nullindchar=# 子句表示在文件中第五個字段如果遇到 # 號,則表示為空值。

裝入(Load)

裝入命令格式與導入類似,命令關鍵字是Load,但是后面的參數比導入命令多的多,詳細用法可以自行參考DB2文檔。

裝入與導入類似,都是將輸入文件中的數據移入到目標表中,二者的不同點將在實例中逐步解釋。

在裝入之前,目標表必須已經存在。裝入的性能比導入高,原因在后面結合實例詳細解釋。裝入操作不記錄到日志中,所以不能使用日志文件進行前滾操作。

裝入分為4個階段:

1. 裝入階段

在這個階段發生兩件事:數據存儲在表中,收集索引鍵并排序。在裝入時,DBA可以指定多長時間生成一致點。它是裝入工具的檢查點。如果裝入在執行期間被打斷,它可以從最后一個一致點處開始繼續重新執行。

2. 構建階段

在構建階段,基于在裝入階段收集的索引鍵信息創建索引。如果在構建階段發生錯誤,裝入工具就重啟,它將從構建階段開始處重新開始構建。

3. 在刪除階段,所有違反唯一或主鍵約束的行都被刪除并拷貝到一個異常表(如果在語句中指定相應選項)中。當輸入行被拒絕,消息文件中就生成消息。