碼文件和IXF文件格式。LOAD不支持WSF文件作為數據導入文件。
7.5 LOAD的三個階段
與IMPORT相比,LOAD雖然在速度上有明顯的優勢,但對管理上的要求比較高。LOAD可以分成三個階段。
第一個階段叫LOAD階段。在這個階段中,數據被導入到表中,如果表上有索引存在,LOAD將按照索引定義搜集索引關鍵字,然後進行排序。如果有不符合表定義的數據行,LOAD將會把它們放到一個文件(DUMP FILE)中,同時在消息文件(MESSAGE FILE)中進行記錄。如果在命令中指定了SAVECOUNT參數,LOAD將每隔一定數目的數據行進行一次保存。
第二個階段叫BUILD階段。在這個階段中,LOAD會利用在LOAD階段搜集的索引關鍵字構造索引。如果表上沒有索引,這個過程將被忽略。另外,如果表上定義了唯一性約束,LOAD會在這個階段進行檢查。如果有違反唯一性約束的數據行,LOAD將會把它們拷貝到一個特殊的表—例外表(Exception Table)中。相應的信息會保存在信息文件(MESSAGE FILE)中。
第三個階段叫DELETE階段。在這個階段中,所有違反唯一性約束的行將被從表中刪除。
7.6 LOAD的語法
LOAD的語法比較複雜,我們在這裡只介紹一些主要的參數。
.-,————-.
V |
>>-LOAD FROM——+-filename-+–+–OF–filetype—————>
+-pipename-+
‘-device—‘
>–+—————————–+————————->
| .-,———–. |
| V | |
‘-LOBS FROM—–lob-path—+–‘
>–+———————————–+——————->
| .—————–. |
| V | |
‘-MODIFIED BY—–filetype-mod—+–‘
>–+———————————————————————————————+>
| .-,—————————. |
| V | |
‘-METHOD–+-L–(—–column-start–column-end—+—)-+———————————–+-+-‘
| | .-,—-. | |
| | V | | |
| ‘-NULL INDICATORS–(—–n—+—)–‘ |
| .-,————–. |
| V | |
+-N–(—–column-name—+—)—————————————————-+
| .-,——————. |
| V | |
‘-P–(—–column-position—+—)————————————————‘
>–+—————+—+————–+———————->
‘-SAVECOUNT–n–‘ ‘-ROWCOUNT–n–‘
>–+——————+—+————————-+——–>
‘-WARNINGCOUNT–n–‘ ‘-MESSAGES–message-file–‘
>–+——————————–+—+-INSERT—-+——–>
‘-TEMPFILES PATH–temp-pathname–‘ +-REPLACE—+
+-RESTART—+
‘-TERMINATE-‘
>–INTO–table-name—-+——————————+——->
| .-,—————-. |
| V | |
‘-(—–insert-column—+—)–‘
>–+——————————————–+————>
‘-DATALINK SPECIFICATION–| datalink-spec |–‘
>–+—————————-+—————————->
‘-FOR EXCEPTION–table-name–‘
>–+——————————————————————————————+>
| .-YES-. |
‘-STATISTICS–+-+—–+–+-+——————————————————–+-+-+–‘
| | ‘-WITH DISTRIBUTION–+——————————–+–‘ | |
| | ‘-AND–+——— +–INDEXES ALL–‘ | |
| | ‘-DETAILED-‘ | |
| ‘-+—————————————+——————‘ |
| ‘–+-AND-+—+———-+–INDEXES ALL–‘ |
| ‘-FOR-‘ ‘-DETAILED-‘ |
‘-NO———————————————————————-‘
>–+——————————————————————+>
| .-NO—————————————————–. |
+-COPY–+-YES–+-USE ADSM–+—————————+——-+-+-+
| | ‘-OPEN–num-sess–SESSIONS–‘ | |
| | .-,——————-. | |
| | V | | |
| +-TO—–device/directory—+——————-+ |
| ‘-LOAD–lib-name–+—————————+-‘ |
| ‘-OPEN–num-sess–SESSIONS–‘ |
‘-NONRECOVERABLE—————————————————‘
>—+—————+—+——————–+—————->
‘-HOLD QUIESCE–‘ ‘-WITHOUT PROMPTING–‘
>—–+—————————+—+———————+—>
‘-DATA BUFFER–buffer-size–‘ ‘-CPU_PARALLELISM–n–‘
>—+———————-+———————————->
‘-DISK_PARALLELISM–n–‘
>—+———————————+———————-><
‘-INDEXING MODE–+-AUTOSELECT–+–‘
+-REBUILD—–+
+-INCREMENTAL-+
‘-DEFERRED—-‘
命令參數:
OF filetype:
指定導入數據文件的類型。LOAD支持三種文件格式(ASC、DEL ASC、 PC/IXF )。WSF文件格式不被LOAD所支持。
MODIFIED BY filetype-mod:
指定一些額外的參數。
SAVECOUNT n:
每隔多少數據行進行一次保存。防止在LOAD失敗後,還需要從頭導入數據。比如,設定n為100,則系統每隔100條記錄就進行一次提交,將導入的數據保存下來。如果在導入到531條記錄時出現了錯誤,因為已經保留了500條記錄,只需要從第501條記錄開始導入就可以了。
ROWCOUNT n:
只導入前n行記錄。比如一個數據文件中包含10000條記錄,如果只想導入前1000條記錄,指定n為1000即可。
WARNINGCOUNT n:
在LOAD過程中,如果出現n個警告信息後自動停止LOAD過程。
MESSAGE msg-file:
用於指定在LOAD過程中生成的警告信息和錯誤信息的存儲文件,如果沒有指定,信息將被輸出到標準輸出(如屏幕)上。一般來說,在LOAD完成後,應該檢查該文件中的信息。
INSERT:
數據導入的模式,如果原來表中有數據,在不破壞表中數據的情況下進行數據導入。
REPLACE:
數據導入的模式,如果原來表中有數據,先將表中的數據清空,然後進行數據導入
RESTART:
如果LOAD被意外中止,重新啟動LOAD過程。後面章節會詳細解釋。
TERMINATE:
如果LOAD被意外中止,中斷LOAD過程。後面章節會詳細解釋。
FOR EXCEPTION table-name:
指定例外表名,用於保存違反唯一性衝突的行。
STATISTICS YES:
在LOAD過程搜集表上的統計信息
COPY YES|COPY NO|NONREVERABLE
7.7 注意事項
IMPORT和LOAD在功能上相似,但在實現方式和使用上有很大不同,我們將通過下表將這兩中工具進行一下對照。
|
IMPORT |
LOAD |
說明 |
|
在導入大量數據時速度較慢 |
在導入大量數據時速度明顯比IMPORT快 |
LOAD是將數據格式化成數據頁的形式直接寫入資料庫 |
|
如果使用IXF文件格式,表和索引可以不存在 |
在導入數據之前,表和索引必須存在 |
IMPORT可以在導入數據時創建表和索引 |
|
支持WSF文件格式 |
不支持WSF文件格式 |
|
|
能夠對錶和視圖進行IMPORT |
LOAD的對象必須是表 |
|
|
在進行IMPORT時,其他程序能夠對錶進行存取 |
在進行LOAD時,其他程序不能對錶進行存取 |
LOAD將導入數據的表所在表空間置為排它狀態 |
|
導入的所有數據都被日誌所記錄 |
LOAD只做極少量的日誌 |
|
|
IMPORT會激活觸發器 |
LOAD不會激活觸發器 |
|
|
IMPORT可以使用COMMITCOUNT參數指定每隔一定數目的數據行就進行一次提交,如果IMPORT失敗,可以從最後的一次提交點重新開始。 |
LOAD可以使用SAVECOUNT參數指定每隔一定數目的數據行就進行一次保存,如果LOAD失敗,可以從最後的一次提交點重新開始。 |
|
|
IMPORT使用的是資料庫內部的臨時表空間 |
LOAD使用的是資料庫以外的臨時空間 |
|
|
所有的約束在IMPORT過程中都將被總結 |
在LOAD過程中只檢查唯一性約束 |
LOAD關閉約束檢查,需要在LOAD後用SET INTEGERITY消除表上的CHECK PENDING狀態 |
|
在IMPORT過程中,當每一行被導入時,索引關鍵字被插入到索引中 |
在LOAD過程中,LOAD在LOAD階段搜集索引關鍵字,在BULID階段統一生成索引 |
|
|
如果需要重新搜集統計信息,在IMPORT後使用RUNSTAT工具 |
如果需要重新搜集統計信息,可以在LOAD後使用RUNSTAT工具,也可以在LOAD過程中進行搜集 |
在LOAD中直接搜集統計信息會延長LOAD所需時間 |
|
IMPORT能夠被DB2 Connect支持 |
LOAD能夠被DB2 Connect支持 |
如果要向主機或AS/400上的資料庫導入數據,用IMPORT |
|
數據導入文件必須在執行IMPORT的節點上 |
數據導入文件必須在要導入數據的資料庫所在的節點上 |
|
|
IMPORT不需要備份 |
根據複製選項的不同,可能需要進行備份 |
IMPORT導入的數據在日誌中會有記錄 |
以下文章點擊率最高
Loading…