db2數據庫 數據遷移 load命令

在使用load命令實現從客戶端導入數據到服務器上時,

load client from ‘G:\dysj\2014-12-31_CBOD_CICIECIF.del’ of del modified by delprioritychar replace into CBOD_CICIECIF NONRECOVERABLE;

client 是表示客戶端

‘G:\dysj\2014-12-31_CBOD_CICIECIF.del’ 我的路徑,最好不要帶中文

modified by delprioritychar 表示過濾換行空格,具體百度吧

CBOD_CICIECIF 我的表名
NONRECOVERABLE 表示表空間不備份,不然會報警告。

但是在執行上面命名時候還是暴力如下警告,導致數據插入不了。

報警告SQL3125W The character data in rows “F2-1” and column “1” was truncated

because the data is longer than the target database column.

Number of rows read = 21630 --讀取到21630行
Number of rows skipped = 0
Number of rows loaded = 0
Number of rows rejected = 21630 --拒絕插入21630行
Number of rows deleted = 0
Number of rows committed = 21630 也就是說沒有插入成功。

從上面的警告可以看出是第一rows(行)的第一列的源數據太長,而數據庫表的相應列的字段太短,導致被截取出錯。

初步懷疑是沒有識別列的分隔符導致的錯誤。

在.del格式的文件下怎麼確認列和列呢?也就是列的分隔符,用notepad打開顯示有GS的分隔符,這是使用ascll作爲隱藏的分隔符,查詢得知GS的ascll十六進制是1D.load 改成如下語句就可以導入了

load client from ‘G:\dysj\2014-12-31_CBOD_CICIECIF.del’ of del modified by codepage=1386
coldel0X1D delprioritychar replace into CBOD_CICIECIF NONRECOVERABLE;

codepage=1386 --處理源文件中文導入產生的亂碼。
coldel0X1D --處理分隔符,0X1D表示十六進制的GS(分組符,英文縮寫,具體的就對照ascll碼修改吧)

最近又遇到新的情況,在列裏面有特殊字符,如“或者,等,load語法的del格式文件時默認”作爲一列字符串的分隔符,如果包含",那麼一列可能和下一個分號"這中間的所有字符作爲一列,這樣也會導致截取,導入數據不全,從而load只能導入一部分數據,這時候可以用chardel0X2C來確定字符串的分隔符,和coldel一樣的含義,就不多說了,2C也可以換成其他ascii碼。

db2的導出語句 export to abc of del select * from table

其中,of del表示導出到的文件的類型,在本例中導出到一個非定界文本文件中;後面的select * from 是一個SQL語句,該語句查詢出來的結果就是要導出的數據。

db2數據遷移del,ixf

在用db2 import from test.del of del insert into table
導入數據的時候,報錯說有幾條數據導入失敗,但是導出的數據條數和導入的數據條數都與數據庫中的數據條數是相等的,很奇怪,後來發現del文件是按行來存儲數據的,因爲在數據庫的一個字段是按文本域存儲數據,含有回車的文本內容在del文件中顯示另起一行了,則導入數據的時候誤認爲是一條數據,但結構不對所以無法導入。後來換成ixf格式導出數據,再導入的時候就沒有問題了。

回頭系統得理了一下DB2的數據遷移知識,大致如下:
   導出:export;導入:import,load;
   數據移動格式:ASC\DEL文本文件;WSF工作表格式,主要用於LOTUS軟件;IXF集成交換格式;
   ASC,DEL,WSF在跨平臺時可能會導致數據丟失,跨平臺用IXF;DEL文件可視,IXF文件不可視。

   export命令:`db2 export to test.ixf of ixf select * from table;`
   import命令:`db2 import from test.ixf of ixf insert_update into table;`
   其中插入方式有以下幾種:insert、insert_update、replace、replace_create(只支持ixf格式)、create(只支持ixf格式);

   db2move可以實現整個數據庫的轉移,語法格式爲db2move <dbname> <action> <option>;其中action包括export、import、copy和load;命令:db2move mydatabase


實例:

db2 "load from CC_FEE_DTL of del modified by codepage=1208 code10xof replace into RLT.JDBC_GPRS_CC_FEE_DTL nonrecoverable "

head -1 CC_FEE_DTL >1.del

db2 "load form 1.del of del modified by codepage=1208 code10xof replace into RLT.JDBC_GPRS_CC_FEE_DTL nonrecoverable

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章