国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

DB2 實用程序介紹之LOAD實用程序

瀏覽:5日期:2023-11-10 09:53:18

LOAD 實用程序概述

LOAD 實用程序是用于為表填充數據的另一種方法。該實用程序將格式化的頁面直接寫入到數據庫中。這種機制允許比 IMPORT 實用程序更有效地移動數據。然而,有些操作,例如參照約束或表約束檢查和觸發器的調用,是不能用 IMPORT 實用程序執行的。

下面是 LOAD 命令的核心。其他受支持的選項和修飾符將在本節中后面幾屏中介紹。為了成功地執行這個命令,必須擁有 SYSADM/DBADM 或 LOAD 權限,或者擁有裝載操作涉及的表上的 INSERT 和/或 DELETE 特權。為了將數據裝載到包含受保護列的表中,必須擁有允許對表中所有受保護列進行寫訪問的 LBAC 憑證。為了將數據裝載到受保護的行中,必須被授予允許寫訪問的安全標簽,作為保護表的安全策略的一部分。

LOAD FROM input_source OF input_typeMESSAGES message_file[ INSERT | REPLACE | TERMINATE | RESTART ]INTO target_tablename

用于 LOAD 的源輸入的格式可以是 DEL、ASC、PC/IXF 或 CURSOR。游標是一個 SELECT 語句返回的結果集。下面是使用 CURSOR 作為裝載輸入的一個例子:

DECLARE mycursor CURSOR FOR SELECT col1, col2, col3 FROM tab1;LOAD FROM mycursor OF CURSOR INSERT INTO newtab;

在開始裝載實用程序之前,裝載目標必須已經存在。裝載目標可以是一個表、一個類型化表或一個表的別名。將數據裝載到包含 XML 列的表、系統表和臨時表是不受支持的。

使用 MESSAGES 選項可以捕獲裝載期間遇到的錯誤、警告和包含有用信息的消息。

LOAD 可以以四種不同的模式執行:

INSERT 模式將輸入數據添加到一個表中,而不更改已有的表數據。 REPLACE 模式刪除表中所有已有的數據,然后用輸入數據填充這個表。 TERMINATE 模式終止裝載操作,并回滾到它開始時所在的時間點。一個例外是,如果指定了 REPLACE 模式,那么表將被刪節。 RESTART 模式用于重新開始之前被中斷的裝載命令。它將自動從最近的一致點繼續。要使用這個模式,可以指定與前一個 LOAD 命令相同的選項,但是這一次加上 RESTART。它使實用程序可以發現在裝載處理中生成的所有需要的臨時表。因此,千萬不要手動刪除裝載命令所生成的任何臨時文件,除非您確信不再需要這些臨時文件。一旦裝載成功完成,這些臨時文件將自動被刪除。默認情況下,這些臨時文件是在當前的工作目錄中創建的。也可以使用 TEMPFILES PATH 選項指定存放臨時文件的目錄。

裝載過程的四個階段

一個完整的裝載過程包括四個不同的階段。

1、裝載階段:

將數據裝載到表中。 收集索引鍵和表統計信息。 記錄一致點。 將無效的數據放在轉儲文件中,并在消息文件中記錄消息。當數據行不符合表定義時,這些數據就被當作無效數據,并且被拒絕(不裝載到表中)。可以使用 dumpfile 修飾符來指定用于記錄被拒絕行的文件的文件名和位置。

2、構建階段:

基于裝載階段收集到的鍵創建索引。如果指定了 STATISTICS USE PROFILE,則還要根據為目標表定義的概要文件(profile)收集統計信息。這個概要文件必須在裝載執行之前創建,否則將返回一個警告,并且無法收集到統計信息。

3、刪除階段:

刪除導致違反惟一鍵的行,并將它們放在異常表中。除了前面描述的不符合目標表定義的數據外,還有一些通過了裝載階段但是違反表中定義的惟一性約束的數據。注意,這里只有違反惟一鍵的行被當作不良數據;這一次不會檢查其他約束。由于這種類型的數據已經被裝載到表中,因此 LOAD 實用程序將在這個階段刪除不符合要求的行。這里可以使用一個異常表來存儲被刪除的行,以便裝載操作完成后決定如何處理它們。如果沒有指定異常表,則不符合要求的行就完全被刪除,而沒有被跟蹤。后面將更詳細地討論異常表。 將消息記錄在消息文件中。

4、索引復制階段:

如果指定了 ALLOW READ ACCESS 和 USE TABLESPACE 選項,那么這個階段會將索引數據從系統臨時表空間中復制到這些索引應該處在的表空間中。

異常表 是一種用戶定義的表,它必須具有與被裝載的目標表相同的列定義。如果至少有一個列在異常表中沒有出現,那么不符合要求的行將被丟棄。只有兩個附加的列可以添加到表的后面:一個是用于記錄一個行何時被插入的時間戳列,另一個是用于存放一個行之所以被當作壞行的原因(或消息)的 CLOB 列。

您將注意到,這一屏中給出的一些概念還沒有被詳細談到。在這一節剩下的部分中,我們將使用一些例子,并將這些概念串起來講。

一個裝載的例子

看看下面這個例子,它演示了一個裝載過程中涉及的步驟:

LOAD FROM emp.ixf OF IXFMESSAGES msg.outMODIFIED BY DUMPFILE=c:emp.dmpTEMPFILES PATH d:tmpINSERT INTO employeeFOR EXCEPTION empexp

DB2 實用程序介紹之LOAD實用程序

在上面的圖中,(1) 顯示了輸入源文件的內容。

(2) 中顯示的目標表 EMPLOYEE 是用以下列定義創建的:

第一列必須是惟一的。

最后一列是一個數值列,且不能為 NULL。

(3) 中顯示的異常表 EMPEXP 是使用和 EMPLOYEE 相同的列,再加上時間戳和消息列創建的。

在裝載階段,輸入文件中的所有數據被裝載到 EMPLOYEE 中 —— 除了標為粉色的兩個行,因為它們不符合 NOT NULL 和 NUMERIC 列定義。由于指定了 DUMPFILE 修飾符,因此這兩行的數據被記錄在 C:emp.dmp 文件中。

在刪除階段,標為黃色的兩個行被從 EMPLOYEE 中刪除,并插入到異常表 EMPEXP 中。這是因為它們違反了 EMPLOYEE 表中第一列的惟一性約束造成的。

在裝載的最后,您應該檢查消息文件、轉儲文件和異常表,然后決定如何處理被拒絕的行。如果裝載成功完成,那么在 D:tmp 中生成的臨時表將被刪除。

裝載選項和文件類型修飾符

前一屏中已經介紹了一些裝載選項和文件類型修飾符。這里再討論一些。

裝載選項:

ROWCOUNT n: 允許用戶指定只裝載輸入文件中的前 n 個記錄。

SAVECOUNT n: 每裝載 n 行后建立一致點。消息文件中將生成和記錄一些消息,用于表明在保存點所在時間上有多少輸入行被成功地裝載。當輸入文件類型是 CURSOR 時,不會出現這種情況。

WARNINGCOUNT n: 在發生 n 次警告后停止裝載。

INDEXING MODE [ REBUILD | INCREMENTAL | AUTOSELECT | DEFERRED ]: 在構建階段構建索引。這個選項指定 LOAD 實用程序是重新構建索引,還是以增量的方式擴展索引。這里支持四中不同的模式:

REBUILD 模式強制重新構建所有索引。 INCREMENTAL 模式只向索引中添加新的數據。 AUTOSELECT 模式允許實用程序在 REBUILD 和 INCREMENTAL 之間作出選擇。 DEFERRED 模式意味著在裝載期間不會創建索引。涉及的索引上會作出標記,但是需要刷新。當重新啟動數據庫或者第一次訪問那些索引時,才會重新構建那些索引。

STATISTICS USE PROFILE: 執行裝載后,之前的目標表統計信息很可能已經無效了,因為表中添加了更多的數據。您可以選擇在構建階段根據為目標表定義的概要文件來收集統計信息。

文件類型修飾符。 文件類型修飾符是用 MODIFIED BY 子句指定的。下面是一些可能對您有用的文件類型修飾符:

fastparse: 減少對被裝載數據的語法檢查,以提高性能。 identityignore、identitymissing 和 identityoverride: 分別用于忽略列數據、表明缺少列數據或覆蓋相同的列數據。 indexfreespace n、pagefreespace n 和 totalfreespace n: 保留索引中指定數量的空閑頁和數據頁。 norowwarnings: 禁止發出行警告。 lobsinfile: 表明要裝載 LOB 文件。看看用于 LOB 路徑的 LOBS FROM 選項。

裝載期間的表訪問

當一個表被裝載時,LOAD 實用程序用一個排它鎖將它鎖定。在裝載完成之前,對表的其他訪問是不允許的。這是 ALLOW NO ACCESS 選項的默認行為。在那樣的裝載期間,表處于 LOAD IN PROGRESS 狀態。有一個很方便的命令可以檢查裝載操作的狀態和返回表狀態:

LOAD QUERY TABLE table_name

您也許會猜想有一個選項會允許表訪問。ALLOW READ ACCESS 選項導致被裝載的表以共享的方式鎖定。讀者可以訪問表中已有的數據,但是不能訪問新裝載的那部分數據。在裝載完成之前,不能訪問正在裝載的數據。這個選項使正在裝載數據的表處于 LOAD IN PROGRESS 狀態和 READ ACCESS ONLY 狀態。

如前一屏中提到的那樣,在構建階段,可以重新構建一個完整的索引,也可以用新的數據擴展索引。對于 ALLOW READ ACCESS 選項,如果重新構建完整的索引,那么將創建索引的一個影子副本。當 LOAD 實用程序進入索引復制階段(見 裝載過程的四個階段)時,目標表將離線,新的索引被復制到目標表空間。

無論指定哪種表訪問選項,裝載操作都需要得到各種不同的鎖才能繼續。如果某個應用程序已經鎖住了目標表,那么 LOAD 實用程序就必須等到這些鎖被釋放。為了不必等到一個鎖釋放出來,可以使用 LOAD 命令中的 LOCK WITH FORCE 選項,使持有有沖突的鎖的其他應用程序離開。

設置 Integrity Pending 表狀態

到目前為止,我們知道不符合目標表定義的輸入數據不會被裝載到表中。在裝載階段,那樣的數據會被拒絕,并記錄在消息文件中。在刪除階段,LOAD 實用程序刪除違反惟一性約束的行。如果指定了相關選項,則不符合要求的行將被插入到一個異常表中。那么,對于表上可能定義的其他約束,例如參照完整性約束和檢查約束,又是如何處理的呢?LOAD 實用程序不會檢查這些約束。表將處于 SET INTEGRITY PENDING 狀態,因此,在可以訪問表之前,必須手動地檢查數據完整性。可以使用前一屏中討論的 LOAD QUERY 命令來查詢表的狀態。系統編目表 SYSCAT.TABLES 中的 CONST_CHECKED 列也表明了表中定義的每種約束的狀態。

要手動關閉一個或多個表的完整性檢查,可以使用 SET INTEGRITY 命令。這里給出一些例子來演示這個命令的一些選項。為了立即為 EMPLOYEE 和 STAFF 表的附加選項檢查完整性,可以使用命令:

SET INTEGRITY FOR employee, staff IMMEDIATE CHECKED INCREMENTAL

為了避免對 EMPLOYEE 表進行外鍵檢查,可以使用 IMMEDIATE UNCHECKED 選項:

SET INTEGRITY FOR employee FOREIGN KEY IMMEDIATE UNCHECKED

在某些情況下,您可能想在裝載完成后使目標表和與之有外鍵關系的子表處于 SET INTEGRITY PENDING 狀態。這樣可以確保對所有這些表的訪問都受到控制,直到執行了手動的完整性檢查。裝載選項是 SET INTEGRITY PENDING CASCADE IMMEDIATE,這表明外鍵約束的 check pending 狀態被立即擴展到有外鍵關系的所有子表中。默認情況下,只有被裝載的表處于 check pending 狀態。這是裝載選項 SET INTEGRITY PENDING CASCADE DEFERRED 的行為。

表空間狀態

由于 LOAD 實用程序直接將格式化的頁寫到數據庫中,因此不會執行數據庫日志記錄來記錄被裝載的新數據。對于可恢復數據庫(即打開了 LOGREATIN 和/或 USEREXIT 選項),DB2 需要確保那個數據庫在裝載完成后仍然是可恢復的。為了保¯可恢復性,用于存放表的表空間將被置于 BACKUP PENDING 模式。這意味著表空間在被訪問之前必須先作備份。

這是使表空間在裝載操作完成之后可以被訪問的默認方法。另一種方法是在裝載運行時,使用 COPY YES 選項備份被裝載的數據。在裝載結束時,將創建一個備份文件。

如果想避免在裝載完成后立即備份表空間,那么可以考慮另外一種選擇。裝載選項 NONRECOVERABLE 將被裝載的表標記為不可恢復。在裝載完成后,相關的表空間可以完全訪問。DB2 不會阻止您查詢和修改表數據。但是,如果以后需要恢復表空間并且回滾到 NONRECOVERABLE 裝載選項之后的某個時間點,這個被裝載的表是不可恢復的。恢復過程忽略所有與表相關的日志。您只能刪除并重新創建表。因此,建議在方便的時候為表作備份,使已有的數據和被裝載的數據都保存在備份中。

使用 Control Center 執行裝載

Control Center 為執行裝載操作提供了易于使用的圖形化界面。如下圖所示,高級選項都用提示作了描述。使用 Control Center 很容易設置這些選項。

IMPORT 與 LOAD

下面是 IMPORT 和 LOAD 實用程序之間的比較:

標簽: DB2 數據庫
主站蜘蛛池模板: 久久久亚洲国产精品主播 | 成年人www | 日本无卡码免费一区二区三区 | 亚洲国产精品a在线 | 国产精品亚洲欧美日韩区 | 高清一级淫片a级中文字幕 高清一区二区 | 成人一级毛片 | 506rr亚洲欧美 | 免费看一级毛片欧美 | 美女黄视频在线观看 | 中文在线亚洲 | 国产成人精品一区二区三在线观看 | 天天操夜夜噜 | 日本又黄又爽又免费 | 毛片免费全部免费观看 | 亚洲国产2017男人a天堂 | 91麻精品国产91久久久久 | 99re国产视频 | 精品视频久久久久 | 久操影视 | 欧美a级完整在线观看 | 日本三级香港三级人妇r | 精品国产三级a | 九九在线精品视频播放 | 国产精品女在线观看 | 日韩在线高清视频 | 亚洲国产精品大秀在线播放 | 日韩一级在线播放免费观看 | 91成人免费观看 | 久久精品网站免费观看 | 免费人成在线观看播放国产 | 国产成人艳妇在线观看 | 91影视永久福利免费观看 | 欧美成年人视频 | 欧美三级免费网站 | 久久一日本道色综合久久 | 三级毛片在线免费观看 | 毛片网站免费在线观看 | 国产精品无打码在线播放9久 | 一级特一级特色生活片 | 久久久网久久久久合久久久久 |