db2與oracle的全面對比11

碼文件和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支持三種文件格式(ASCDEL ASC PC/IXF )。WSF文件格式不被LOAD所支持。

MODIFIED BY filetype-mod


指定一些額外的參數。

SAVECOUNT n

每隔多少數據行進行一次保存。防止在LOAD失敗後,還需要從頭導入數據。比如,設定n100,則系統每隔100條記錄就進行一次提交,將導入的數據保存下來。如果在導入到531條記錄時出現了錯誤,因為已經保留了500條記錄,只需要從第501條記錄開始導入就可以了。

ROWCOUNT n


只導入前n行記錄。比如一個數據文件中包含10000條記錄,如果只想導入前1000條記錄,指定n1000即可。

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    注意事項

IMPORTLOAD在功能上相似,但在實現方式和使用上有很大不同,我們將通過下表將這兩中工具進行一下對照。

 

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過程中,LOADLOAD階段搜集索引關鍵字,在BULID階段統一生成索引

 

如果需要重新搜集統計信息,在IMPORT後使用RUNSTAT工具

如果需要重新搜集統計信息,可以在LOAD後使用RUNSTAT工具,也可以在LOAD過程中進行搜集

LOAD中直接搜集統計信息會延長LOAD所需時間

IMPORT能夠被DB2 Connect支持

LOAD能夠被DB2 Connect支持

如果要向主機或AS/400上的數據庫導入數據,用IMPORT

數據導入文件必須在執行IMPORT的節點上

數據導入文件必須在要導入數據的數據庫所在的節點上

 

IMPORT不需要備份

根據複製選項的不同,可能需要進行備份

IMPORT導入的數據在日誌中會有記錄

以下文章點擊率最高

Loading…

     

如果這文章對你有幫助,請掃左上角微信支付-支付寶,給於打賞,以助博客運營