DB2 import詳解
匯入實用程式使用SQL INSERT語句向表、型別表或檢視填充資料。如果接收匯入資料的表或檢視已包含資料,那麼輸入資料可替換現有資料,也可追加至現有資料。
IMPORT FROM filename OF { IXF | ASC | DEL | WSF }
[ LOBS FROM lob-path[{,lob-path}…] ]
[ XML FROM xml-path[{,xml-path}…] ]
[ MODIFIED BY filetype-mod … ]
[ METHOD{ L( col-start col-end[{,col-start col-end}…] )
[NULL INDICATORS ( col-position[{,col-position}…] )] |
N( col-name[{,col-name}…] ) |
P( col-position[{,col-position}…] )
}
]
[ XMLPARSE { STRIP | PRESERVE } WHITESPACE ]
[ XMLVALIDATE USING
{XDS [ DEFAULT schema-sqlid ]
[ IGNORE (schema-sqlid[{,schema-sqlid}…])]
[MAP
( (schema-sqlid,schema-sqlid)
[{(schema-sqlid,schema-sqlid)}…]
)
] |
SCHEMA schema-sqlid |
SCHEMALOCATION HINTS
}
]
[ allow { NO | WRITE } ACCESS ]
[ COMMITCOUNT {n | AUTOMATIC} ]
[ {RESTARTCOUNT | SKIPCOUNT} n ] [ ROWCOUNT n ] [ WARNINGCOUNT n ]
[ NOTIMEOUT ]
[ MESSAGES message-file ]
{ { INSERT | INSERT_UPDATE | REPLACE | REPLACE_CREATE }
INTO {table-name[(insert-column,…)] | hierarchy-description} |
CREATE INTO { table-name[(insert-column,…)] |
hierarchy-description
{ AS ROOT TABLE | UNDER sub-table-name }
[ IN tablespace-name [ INDEX IN tablespace-name ]
[ LONG IN tablespace-name ]
]
}
}
filetype-mod:
COMPOUND=x、INDEXSCHEMA=schema、FORCEIN、INDEXIXF、IMPLIEDDECIMAL、
NOCHECKLENGTHS、NOEOFCHAR、NULLINDCHAR=x、RECLEN=x、STRIPTBLANKS、
STRIPTNULLS、NO_TYPE_ID、NODOUBLEDEL、LOBSINFILE、USEDEFAULTS、
CHARDELx、COLDELx、DLDELx、DECPLUSBLANK、DECPTx、DATESISO、
DELPRIORITYCHAR、IDENTITYMISSING、IDENTITYIGNORE、
GENERATEDMISSING、GENERATEDIGNORE、DATEFORMAT=x、TIMEFORMAT=x、
TIMESTAMPFORMAT=x、KEEPBLANKS、CODEPAGE=x、NOROWWARNINGS、
NOCHARDEL、NODEFAULTS、USEGRAPHICCODEPAGE、FORCECREATE、XMLCHAR、
XMLGRAPHIC、SECLABELCHAR 和 SECLABELNAME
hierarchy-description:
{ ALL TABLES | ( sub-table-name [(insert-column,…)],… ) } [IN]
HIERARCHY { STARTING sub-table-name | ( sub-table-name,… ) }
說明:
1、MODIFIED BY子句指定檔案型別修飾符以更改資料格式,告訴IMPORT實用程式如何處理資料以改進效能。
2、預設情況下,IMPORT實用程式直到匯入成功才執行落實,但某些ALLOW WRITE ACCESS匯入例外。雖然這會改變匯入速度,但考慮到並行性、可重新啟動性及活動日誌空間注意事項,最好指定落實在匯入期間進行。其中一種方法是將COMMITCOUNT引數設定為“automatic”,這會指示IMPORT在內部確定何時應執行落實。或者將COMMITCOUNT設定為特定數字,指示IMPORT在達到指定的已匯入記錄數時執行一次落實。
3、因為IMPORT實用程式是嵌入式SQL應用程式並且以內部方式執行SQL訪存,所以應用於SQL操作的最佳化會同時應用於IMPORT。可使用compound檔案型別修飾符以便一次插入指定數目的行,而不是按預設方式逐行插入。如果預計匯入期間會生成大量警告(並因此導致操作變慢),可指定norowwarnings檔案型別修飾符以抑制有關被拒絕行的警告。
4、MESSAGES引數指定訊息檔案,在匯入期間,會編寫標準ASCII文字訊息檔案以包含與該操作相關的錯誤訊息、警告訊息和參考訊息。可以在匯入正在進行時訪問訊息檔案,以對匯入進度進行監視。如果匯入操作失敗,那麼可使用訊息檔案來確定重新啟動位置,原因是訊息檔案會指示成功匯入的最後一行。注:如果針對遠端資料庫的匯入操作生成的輸出訊息量超過60KB,那麼該實用程式會保留前30KB和後30KB。
一、IMPORT的五種方式:
匯入可使用五種方式,它們用於確定匯入資料的方法。前三種方式為INSERT、INSERT_UPDATE和REPLACE,在目標表已存在的情況下使用。這三種方式都支援IXF、WSF、ASC和DEL資料格式。但是,只有INSERT和INSERT_UPDATE可與暱稱配合使用。
INSERT |
將輸入資料插入到目標表中而不更改現有資料 |
INSERT_UPDATE |
使用輸入行的值更新具有匹配主鍵值的行,如果沒有匹配行,那麼會將已匯入行插入到表中。 |
REPLACE |
刪除所有現有資料並插入已匯入資料,同時保留表和索引定義 |
另外兩種方式為REPLACE_CREATE和CREATE,在目標表不存在時使用。它們只能與PC/IXF格式的輸入檔案配合使用,此格式包含要建立的表的結構描述。如果物件表具有自身以外的任何從屬,那麼不能以這些方式執行匯入。建議不使用IMPORT的CREATE和REPLACE_CREATE方式,改用db2look實用程式。
REPLACE_CREATE |
刪除所有現有資料並插入已匯入資料,同時保留表和索引定義;如果目標表和索引不存在,那麼建立目標表和索引 |
CREATE |
建立目標表和索引;可指定在其中建立新表的表空間名稱 |
二、IMPORT工作步驟:
1、鎖定表
根據是否允許對錶進行並行訪問,IMPORT會獲取對現有目標表的獨佔(X)或非獨佔(IX)鎖定。
2、查詢和檢索資料
IMPORT使用FROM子句來查詢輸入資料。如果命令指示XML或LOB資料存在,那麼IMPORT會查詢此資料。
3、插入資料
IMPORT會替換現有資料或將新的資料行新增至表。
4、檢查約束和激發觸發器
寫入資料後,IMPORT會確保每個已插入行符合針對目標表定義的約束。有關被拒絕行的資訊將寫至訊息檔案。IMPORT還會激發現有觸發器。
5、落實操作
IMPORT會儲存所作更改並釋放針對目標表的鎖定。還可指定在匯入期間定期落實。
三、IMPORT所需許可權
憑藉DATAACCESS許可權可以執行任何型別的匯入操作。以下是執行相應匯入型別的其他許可權:
INSERT |
CONTROL或INSERT和SELECT |
INSERT_UPDATE |
CONTROL或INSERT、SELECT、UPDATE、DELETE |
REPLACE |
CONTROL或INSERT、SELECT、DELETE |
REPLACE_CREATE |
目標表存在時:CONTROL或INSERT、SELECT、DELETE 目標表不存在時:CREATETAB(針對資料庫)、USE(針對表空間),以及模式不存在時:IMPLICIT_SCHEMA(針對資料庫)或模式存在時:CREATEIN(針對模式) |
CREATE |
CREATETAB(針對資料庫)和USE(針對表空間),以及模式不存在時:IMPLICIT_SCHEMA(針對資料庫)或模式存在時:CREATEIN(針對模式) |
示例:將sample資料庫中的staff表匯入到test資料庫中。
D:\>db2 export to myfile.ixf of ixf messages msg.txt select * from staff --匯出sample資料庫中staff表資料
匯出的行數:35
D:\>db2look -d sample -e -t staff -o staff.dml –-獲得DDL
-- USER 是: *******
-- db2look 實用程式將只考慮指定的表
-- 正在建立表的 DDL
-- 輸出被髮送到檔案: staff.dml
-- 正在自動繫結程式包 ...
-- 繫結成功
-- 正在自動繫結程式包 ...
-- 繫結成功
其中的DDL內容如下:
CREATE TABLE "******"."STAFF" (
"ID" SMALLINT NOT NULL ,
"NAME" VARCHAR(9) ,
"DEPT" SMALLINT ,
"JOB" CHAR(5) ,
"YEARS" SMALLINT ,
"SALARY" DECIMAL(7,2) ,
"COMM" DECIMAL(7,2) )
IN "USERSPACE1" ;
根據DDL,在test資料庫中建立staff表。
D:\>db2 import from myfile.ixf of ixf messages msg2.txt insert into staff --向test資料庫中的staff表匯入資料
讀取行數 = 35
跳過行數 = 0
插入行數 = 35
更新行數 = 0
拒絕行數 = 0
落實行數 = 35
D:\>db2 select * from staff --驗證匯入結果
id name dept job years salary comm
------ --------- ------ ----- ------ --------- ---------
10 Sanders 20 Mgr 7 98357.50 -
20 Pernal 20 Sales 8 78171.25 612.45
30 Marenghi 38 Mgr 5 77506.75 -
40 O'Brien 38 Sales 6 78006.00 846.55
50 Hanes 15 Mgr 10 80659.80 -
60 Quigley 38 Sales - 66808.30 650.25
70 Rothman 15 Sales 7 76502.83 1152.00
80 James 20 Clerk - 43504.60 128.20
90 Koonitz 42 Sales 6 38001.75 1386.70
100 Plotz 42 Mgr 7 78352.80 -
110 Ngan 15 Clerk 5 42508.20 206.60
120 Naughton 38 Clerk - 42954.75 180.00
130 Yamaguchi 42 Clerk 6 40505.90 75.60
140 Fraye 51 Mgr 6 91150.00 -
150 Williams 51 Sales 6 79456.50 637.65
160 Molinare 10 Mgr 7 82959.20 -
170 Kermisch 15 Clerk 4 42258.50 110.10
180 Abrahams 38 Clerk 3 37009.75 236.50
190 Sneider 20 Clerk 8 34252.75 126.50
200 Scoutten 42 Clerk - 41508.60 84.20
210 Lu 10 Mgr 10 90010.00 -
220 Smith 51 Sales 7 87654.50 992.80
230 Lundquist 51 Clerk 3 83369.80 189.65
240 Daniels 10 Mgr 5 79260.25 -
250 Wheeler 51 Clerk 6 74460.00 513.30
260 Jones 10 Mgr 12 81234.00 -
270 Lea 66 Mgr 9 88555.50 -
280 Wilson 66 Sales 9 78674.50 811.50
290 Quill 84 Mgr 10 89818.00 -
300 Davis 84 Sales 5 65454.50 806.10
310 Graham 66 Sales 13 71000.00 200.30
320 Gonzales 66 Sales 4 76858.20 844.00
330 Burke 66 Clerk 1 49988.00 55.50
340 Edwards 84 Sales 7 67844.00 1285.00
350 Gafney 84 Clerk 5 43030.50 188.00
35 條記錄已選擇。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26224914/viewspace-2123606/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- DB2 export and importDB2ExportImport
- require 和 import 詳解UIImport
- import方法引入模組詳解Import
- less @import and extend及mixin詳解Import
- DB2 export詳解DB2Export
- DB2 export 與 import 相關操作DB2ExportImport
- Sqoop import載入HBase案例詳解OOPImport
- 詳解es6的export和import命令ExportImport
- import、require、export、module.exports 混合使用詳解ImportUIExport
- Sqoop-1.4.4工具import和export使用詳解OOPImportExport
- @import註解Import
- DB2中export命令詳解<<轉載>>DB2Export
- CommonJS,AMD,CMD,ES6,require 和 import 詳解JSUIImport
- DB2資料的匯入(Import) 匯出(Export)(Load)DB2ImportExport
- web前端技術分享:詳解模組化require 和 import的區別Web前端UIImport
- @Import與@ImportResource註解的解讀Import
- Spring註解之@ImportSpringImport
- #import vs @importImport
- Linux下DB2資料庫安裝過程詳解LinuxDB2資料庫
- DB2 V9自動自調整記憶體詳解DB2記憶體
- Spring中@Import註解的使用SpringImport
- #import、#include、@import modules區別Import
- require()、import、import()有哪些區別?UIImport
- ImportError: cannot import name ‘imresize‘解決辦法ImportError
- 解決python MySQLdb import Error問題PythonMySqlImportError
- 詳細講解DB2資料庫效能監控的具體步驟DB2資料庫
- Python import相關內容區別介紹( import *** as 、from***import )PythonImport
- from module import 和 import 的區別Import
- SCSS @importCSSImport
- CSS @importCSSImport
- require OR importUIImport
- Import OverImport
- Import DataImport
- export/importExportImport
- Import Error: cannot import name ‘export_saved_modelImportErrorExport
- import tkinter與from tkinter import *的區別Import
- eslint-plugin-import 規則之 Import / OrderEsLintPluginImport
- ubuntu下import matplotlib錯誤解決辦法UbuntuImport