自己整理的學習資料——DB2 V8資料庫基礎(二十七)
6 資料移動
DB2中所謂的資料移動,包括:
n 資料的匯入(Import) :支援DEL,ASC,IXF,WSF
n 資料的匯出(Export) :支援DEL,IXF,WS,不支援ASC
n 資料的裝入(Load) :支援DEL,ASC,IXF,不支援WSF
DB2MOVE支援IXF
在講解命令之前,首先介紹一下檔案的格式,用於DB2資料移動的檔案格式有四種:
n ASC——非定界ASCII檔案,是一個ASCII字元流。資料流中的行由行定界符分隔,而行中的每一列則通過起始和結束位置來定義。
n DEL——定界ASCII檔案,也是一個ASCII字元流。資料流中的行由行定界符分隔,行中的列值由列定界符分隔。檔案型別修飾符可用於修改這些定界符的預設值。
n WSF——(work sheet format)為工作表格式,用於與Lotus系列的軟體進行資料交換。
n PC/IXF——是整合交換格式(Integration Exchange Format,IXF)資料交換體系結構的改編版本,由一些列可變長度的記錄構成,包括頭記錄、表記錄、表中每列的列描述符記錄以及表中每行的一條或多條資料記錄。PC/IXF 檔案記錄由包含了字元資料的欄位組成。
6.1 del格式的倒入倒出(del檔案可視)
6.1.1 概述
db2 export to f:\test.del of del select * from local.test1
//把模式為local表名為test1的表匯出到f盤的test.del
db2 import from f:\test.del of del insert into local.test2
//匯入,把import換成load,就能換成高速匯入,load這裡只能作為匯入的方式,而且load不使用緩衝池,不觸發觸發器, insert換成replace就能變成替代插入(就是把表裡原來的資料都清空,重新插入),CREATE 或REPLACE_CREATE關鍵字時,檔案型別必須是 IXF。
6.1.2 改變del格式檔案的格式控制符
export to c:\staff.txt of del modified by coldel$ chardel'' decplusblank select * from staff
在該例中,modified子句用於控制各種符號,coldel表示欄位之間的間隔符,預設情況為逗號,現在改為$號;chardel表示字串欄位用什麼符號引用,預設情況下為一對雙引號括起來,現在改為用一對單引號括起來;decplusblank表示對於十進位制資料型別,用空格代替最前面的加號,因為預設情況下會在十進位制資料前面加上正負號的。
使匯出文字中的字元型欄位不帶雙引號
db2 "export to para.del of del modified by nochardel select * from tmp_table_para"
6.1.3 大資料的匯出
export to d:\myfile.del of del lobs to d:\lob\ lobfile lobs modified by lobsinfile select * from emp_photo
其中第三個欄位是BLOB型別,在該檔案中只儲存了一個標誌,相當於一個指標,真正的LOB資料儲存在d:\lob目錄下的lobs.001、lobs.002、......等一系列檔案中。命令中lobs to 後面指定大物件資料儲存在什麼路徑下(注意,該路徑必須事先已經存在,否則會報錯),lobfile 後面指定大物件資料儲存在什麼檔案中,不要指定副檔名,DB2會根據資料量自動追加.001、.002等副檔名,同時不要忘記加上modified by lobsinfile子句。
6.2 ixf格式的倒入倒出(ixf檔案不可視)
6.2.1 概述
db2 export to f:\test.ixf of ixf select * from local.test1
db2 import from f:\test.ixf of ixf insert into local.test2
create into local.test2
//匯入,把import換成load,就能換成高速匯入,load這裡只能作為匯入的方式,而且load不使用緩衝池,不觸發觸發器, insert換成replace就能變成替代插入(就是把表裡原來的資料都清空,重新插入),換成create就是建立新的
//匯出一個表的一部分資料並把這些資料刪除
db2 export to ttt.ixf of ixf select * from old table ( delete from (select * from test1 fetch first 1 rows only))
//匯出一個表的全部資料並把這些資料刪除
db2 export to ttt.ixf of ixf selcet * from old table(delete from local.test1 )
6.2.2 把匯出資訊儲存在訊息檔案中
export to d:\awards.ixf of ixf messages d:\msgs.txt select * from staff
這個例子把staff表中的資料匯出到d:\awards.ixf檔案中,所有的匯出資訊都儲存在d:\msgs.txt檔案中(無論是成功、警告還是失敗資訊),這樣,管理員可以通過觀察資訊檔案找到問題所在。
6.2.3 給匯出資料列重新命名
export to d:\awards.ixf of ixf method n(c1,c2,c3,c4,c5,c6,c7) select * from staff
在預設情況下,匯出的每一列資料以表中對應的欄位名自動命名,我們可以通過method n子句給每一列重新命名,需要注意的是,這個子句只在ixf和wsf格式檔案中有效,在文字檔案中不能使用。
6.3 ASC格式的匯入匯出
6.3.1 以ASC格式將資料匯出到檔案
Export命令是不支援ASC格式檔案的,所以如果想匯出ASC這樣規整的格式,需要程式設計師自己進行轉換操作,思路是將各種資料型別都轉換成定長字串,然後把各個要匯出的欄位合併成為一個欄位。
例如建立如下結構的表n:
create table n(a int,b date,c time,d varchar(5),e char(4),f double)
然後插入兩條資料:
insert into n values(15,'2004-10-21','23:12:23','abc','hh',35.2)
insert into n values(5,'2004-1-21','3:12:23','bc','hhh',35.672)
要想把這兩條資料以規整的格式匯出到檔案中,進行如下操作:
export to c:\test.txt of del select char(a) || char(b) || char(c) || char(d,5) || e || char(f) as tmp from n
這樣匯出的結果與ASC格式的檔案非常類似,只是每一行的前後多出了一對雙引號,對此我們可以使用文字工具(如寫字板、記事本等)把雙引號刪除掉,也可以置之不理,在以後匯入的時候直接控制格式(忽略雙引號)
在檔案中的格式為:
"15 2004-10-2123.12.23abc hh 3.52E1 "
"5 2004-01-2103.12.23bc hhh 3.5672E1 "
6.3.2 從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方法,下面會敘述。
例1:利用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格式的檔案中的資料插入到表中。
例2:利用p方法匯入資料
import from d:\org.ixf of ixf method p(4,5,2) replace into orgtest
該例子執行的效果和例九類似,只是把n方法換成了p方法,p方法後面的列表中指明列的序號即可,不需要指明列名。另外,此例中使用了replace方式插入資料,這會把表中現有的資料都刪除,然後向空表中插入資料。
例3:關於空值的匯入
對於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=# 子句表示在檔案中第五個欄位如果遇到 # 號,則表示為空值。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9524210/viewspace-481948/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 自己整理的學習資料——DB2 V8資料庫基礎(六)DB2資料庫
- 自己整理的學習資料——DB2 V8資料庫基礎(七)DB2資料庫
- 自己整理的學習資料——DB2 V8資料庫基礎(八)DB2資料庫
- 自己整理的學習資料——DB2 V8資料庫基礎(十一)DB2資料庫
- 自己整理的學習資料——DB2 V8資料庫基礎(十二)DB2資料庫
- 自己整理的學習資料——DB2 V8資料庫基礎(十三)DB2資料庫
- 自己整理的學習資料——DB2 V8資料庫基礎(十六)DB2資料庫
- 自己整理的學習資料——DB2 V8資料庫基礎(十七)DB2資料庫
- 自己整理的學習資料——DB2 V8資料庫基礎(十八)DB2資料庫
- 自己整理的學習資料——DB2 V8資料庫基礎(十九)DB2資料庫
- 自己整理的學習資料——DB2 V8資料庫基礎(二十)DB2資料庫
- 自己整理的學習資料——DB2 V8資料庫基礎(一)DB2資料庫
- 自己整理的學習資料——DB2 V8資料庫基礎(四)DB2資料庫
- 自己整理的學習資料——DB2 V8資料庫基礎(五)DB2資料庫
- 自己整理的學習資料——DB2 V8資料庫基礎(二十一)DB2資料庫
- 自己整理的學習資料——DB2 V8資料庫基礎(二十二)DB2資料庫
- 自己整理的學習資料——DB2 V8資料庫基礎(二十四)DB2資料庫
- 自己整理的學習資料——DB2 V8資料庫基礎(二十六)DB2資料庫
- 自己整理的學習資料——DB2 V8資料庫基礎(二十八)DB2資料庫
- mysql資料庫學習基礎知識整理MySql資料庫
- 資料庫基礎知識整理與複習總結資料庫
- 【java基礎資料整理】Java
- 零基礎學習MySQL資料庫—3MySql資料庫
- 學習資料庫的基礎知識的書籍資料庫
- 突擊學習之資料庫基礎彙總資料庫
- 資料庫學習筆記 - MySQL基礎知識資料庫筆記MySql
- MySQL資料庫基礎學習筆記(整理自蘇勇老師的MySQL基礎課程視訊)MySql資料庫筆記
- Go 學習資料整理Go
- iOS 學習資料整理iOS
- swift學習資料整理Swift
- 資料庫 基礎資料庫
- 資料庫基礎資料庫
- 資料庫資料整理資料庫
- 語料庫基礎學習
- 整理最全的“大資料”學習資源大資料
- 大資料學習方法,學大資料需要的基礎和路線大資料
- SLAM(一)----學習資料整理SLAM
- STF,docker學習資料整理Docker