av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

DB2 實(shí)用程序介紹之LOAD實(shí)用程序

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

LOAD 實(shí)用程序概述

LOAD 實(shí)用程序是用于為表填充數(shù)據(jù)的另一種方法。該實(shí)用程序?qū)⒏袷交捻?yè)面直接寫(xiě)入到數(shù)據(jù)庫(kù)中。這種機(jī)制允許比 IMPORT 實(shí)用程序更有效地移動(dòng)數(shù)據(jù)。然而,有些操作,例如參照約束或表約束檢查和觸發(fā)器的調(diào)用,是不能用 IMPORT 實(shí)用程序執(zhí)行的。

下面是 LOAD 命令的核心。其他受支持的選項(xiàng)和修飾符將在本節(jié)中后面幾屏中介紹。為了成功地執(zhí)行這個(gè)命令,必須擁有 SYSADM/DBADM 或 LOAD 權(quán)限,或者擁有裝載操作涉及的表上的 INSERT 和/或 DELETE 特權(quán)。為了將數(shù)據(jù)裝載到包含受保護(hù)列的表中,必須擁有允許對(duì)表中所有受保護(hù)列進(jìn)行寫(xiě)訪(fǎng)問(wèn)的 LBAC 憑證。為了將數(shù)據(jù)裝載到受保護(hù)的行中,必須被授予允許寫(xiě)訪(fǎng)問(wèn)的安全標(biāo)簽,作為保護(hù)表的安全策略的一部分。

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

用于 LOAD 的源輸入的格式可以是 DEL、ASC、PC/IXF 或 CURSOR。游標(biāo)是一個(gè) SELECT 語(yǔ)句返回的結(jié)果集。下面是使用 CURSOR 作為裝載輸入的一個(gè)例子:

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

在開(kāi)始裝載實(shí)用程序之前,裝載目標(biāo)必須已經(jīng)存在。裝載目標(biāo)可以是一個(gè)表、一個(gè)類(lèi)型化表或一個(gè)表的別名。將數(shù)據(jù)裝載到包含 XML 列的表、系統(tǒng)表和臨時(shí)表是不受支持的。

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

LOAD 可以以四種不同的模式執(zhí)行:

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

裝載過(guò)程的四個(gè)階段

一個(gè)完整的裝載過(guò)程包括四個(gè)不同的階段。

1、裝載階段:

將數(shù)據(jù)裝載到表中。 收集索引鍵和表統(tǒng)計(jì)信息。 記錄一致點(diǎn)。 將無(wú)效的數(shù)據(jù)放在轉(zhuǎn)儲(chǔ)文件中,并在消息文件中記錄消息。當(dāng)數(shù)據(jù)行不符合表定義時(shí),這些數(shù)據(jù)就被當(dāng)作無(wú)效數(shù)據(jù),并且被拒絕(不裝載到表中)。可以使用 dumpfile 修飾符來(lái)指定用于記錄被拒絕行的文件的文件名和位置。

2、構(gòu)建階段:

基于裝載階段收集到的鍵創(chuàng)建索引。如果指定了 STATISTICS USE PROFILE,則還要根據(jù)為目標(biāo)表定義的概要文件(profile)收集統(tǒng)計(jì)信息。這個(gè)概要文件必須在裝載執(zhí)行之前創(chuàng)建,否則將返回一個(gè)警告,并且無(wú)法收集到統(tǒng)計(jì)信息。

3、刪除階段:

刪除導(dǎo)致違反惟一鍵的行,并將它們放在異常表中。除了前面描述的不符合目標(biāo)表定義的數(shù)據(jù)外,還有一些通過(guò)了裝載階段但是違反表中定義的惟一性約束的數(shù)據(jù)。注意,這里只有違反惟一鍵的行被當(dāng)作不良數(shù)據(jù);這一次不會(huì)檢查其他約束。由于這種類(lèi)型的數(shù)據(jù)已經(jīng)被裝載到表中,因此 LOAD 實(shí)用程序?qū)⒃谶@個(gè)階段刪除不符合要求的行。這里可以使用一個(gè)異常表來(lái)存儲(chǔ)被刪除的行,以便裝載操作完成后決定如何處理它們。如果沒(méi)有指定異常表,則不符合要求的行就完全被刪除,而沒(méi)有被跟蹤。后面將更詳細(xì)地討論異常表。 將消息記錄在消息文件中。

4、索引復(fù)制階段:

如果指定了 ALLOW READ ACCESS 和 USE TABLESPACE 選項(xiàng),那么這個(gè)階段會(huì)將索引數(shù)據(jù)從系統(tǒng)臨時(shí)表空間中復(fù)制到這些索引應(yīng)該處在的表空間中。

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

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

一個(gè)裝載的例子

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

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

DB2 實(shí)用程序介紹之LOAD實(shí)用程序

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

(2) 中顯示的目標(biāo)表 EMPLOYEE 是用以下列定義創(chuàng)建的:

第一列必須是惟一的。

最后一列是一個(gè)數(shù)值列,且不能為 NULL。

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

在裝載階段,輸入文件中的所有數(shù)據(jù)被裝載到 EMPLOYEE 中 —— 除了標(biāo)為粉色的兩個(gè)行,因?yàn)樗鼈儾环?NOT NULL 和 NUMERIC 列定義。由于指定了 DUMPFILE 修飾符,因此這兩行的數(shù)據(jù)被記錄在 C:emp.dmp 文件中。

在刪除階段,標(biāo)為黃色的兩個(gè)行被從 EMPLOYEE 中刪除,并插入到異常表 EMPEXP 中。這是因?yàn)樗鼈冞`反了 EMPLOYEE 表中第一列的惟一性約束造成的。

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

裝載選項(xiàng)和文件類(lèi)型修飾符

前一屏中已經(jīng)介紹了一些裝載選項(xiàng)和文件類(lèi)型修飾符。這里再討論一些。

裝載選項(xiàng):

ROWCOUNT n: 允許用戶(hù)指定只裝載輸入文件中的前 n 個(gè)記錄。

SAVECOUNT n: 每裝載 n 行后建立一致點(diǎn)。消息文件中將生成和記錄一些消息,用于表明在保存點(diǎn)所在時(shí)間上有多少輸入行被成功地裝載。當(dāng)輸入文件類(lèi)型是 CURSOR 時(shí),不會(huì)出現(xiàn)這種情況。

WARNINGCOUNT n: 在發(fā)生 n 次警告后停止裝載。

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

REBUILD 模式強(qiáng)制重新構(gòu)建所有索引。 INCREMENTAL 模式只向索引中添加新的數(shù)據(jù)。 AUTOSELECT 模式允許實(shí)用程序在 REBUILD 和 INCREMENTAL 之間作出選擇。 DEFERRED 模式意味著在裝載期間不會(huì)創(chuàng)建索引。涉及的索引上會(huì)作出標(biāo)記,但是需要刷新。當(dāng)重新啟動(dòng)數(shù)據(jù)庫(kù)或者第一次訪(fǎng)問(wèn)那些索引時(shí),才會(huì)重新構(gòu)建那些索引。

STATISTICS USE PROFILE: 執(zhí)行裝載后,之前的目標(biāo)表統(tǒng)計(jì)信息很可能已經(jīng)無(wú)效了,因?yàn)楸碇刑砑恿烁嗟臄?shù)據(jù)。您可以選擇在構(gòu)建階段根據(jù)為目標(biāo)表定義的概要文件來(lái)收集統(tǒng)計(jì)信息。

文件類(lèi)型修飾符。 文件類(lèi)型修飾符是用 MODIFIED BY 子句指定的。下面是一些可能對(duì)您有用的文件類(lèi)型修飾符:

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

裝載期間的表訪(fǎng)問(wèn)

當(dāng)一個(gè)表被裝載時(shí),LOAD 實(shí)用程序用一個(gè)排它鎖將它鎖定。在裝載完成之前,對(duì)表的其他訪(fǎng)問(wèn)是不允許的。這是 ALLOW NO ACCESS 選項(xiàng)的默認(rèn)行為。在那樣的裝載期間,表處于 LOAD IN PROGRESS 狀態(tài)。有一個(gè)很方便的命令可以檢查裝載操作的狀態(tài)和返回表狀態(tài):

LOAD QUERY TABLE table_name

您也許會(huì)猜想有一個(gè)選項(xiàng)會(huì)允許表訪(fǎng)問(wèn)。ALLOW READ ACCESS 選項(xiàng)導(dǎo)致被裝載的表以共享的方式鎖定。讀者可以訪(fǎng)問(wèn)表中已有的數(shù)據(jù),但是不能訪(fǎng)問(wèn)新裝載的那部分?jǐn)?shù)據(jù)。在裝載完成之前,不能訪(fǎng)問(wèn)正在裝載的數(shù)據(jù)。這個(gè)選項(xiàng)使正在裝載數(shù)據(jù)的表處于 LOAD IN PROGRESS 狀態(tài)和 READ ACCESS ONLY 狀態(tài)。

如前一屏中提到的那樣,在構(gòu)建階段,可以重新構(gòu)建一個(gè)完整的索引,也可以用新的數(shù)據(jù)擴(kuò)展索引。對(duì)于 ALLOW READ ACCESS 選項(xiàng),如果重新構(gòu)建完整的索引,那么將創(chuàng)建索引的一個(gè)影子副本。當(dāng) LOAD 實(shí)用程序進(jìn)入索引復(fù)制階段(見(jiàn) 裝載過(guò)程的四個(gè)階段)時(shí),目標(biāo)表將離線(xiàn),新的索引被復(fù)制到目標(biāo)表空間。

無(wú)論指定哪種表訪(fǎng)問(wèn)選項(xiàng),裝載操作都需要得到各種不同的鎖才能繼續(xù)。如果某個(gè)應(yīng)用程序已經(jīng)鎖住了目標(biāo)表,那么 LOAD 實(shí)用程序就必須等到這些鎖被釋放。為了不必等到一個(gè)鎖釋放出來(lái),可以使用 LOAD 命令中的 LOCK WITH FORCE 選項(xiàng),使持有有沖突的鎖的其他應(yīng)用程序離開(kāi)。

設(shè)置 Integrity Pending 表狀態(tài)

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

要手動(dòng)關(guān)閉一個(gè)或多個(gè)表的完整性檢查,可以使用 SET INTEGRITY 命令。這里給出一些例子來(lái)演示這個(gè)命令的一些選項(xiàng)。為了立即為 EMPLOYEE 和 STAFF 表的附加選項(xiàng)檢查完整性,可以使用命令:

SET INTEGRITY FOR employee, staff IMMEDIATE CHECKED INCREMENTAL

為了避免對(duì) EMPLOYEE 表進(jìn)行外鍵檢查,可以使用 IMMEDIATE UNCHECKED 選項(xiàng):

SET INTEGRITY FOR employee FOREIGN KEY IMMEDIATE UNCHECKED

在某些情況下,您可能想在裝載完成后使目標(biāo)表和與之有外鍵關(guān)系的子表處于 SET INTEGRITY PENDING 狀態(tài)。這樣可以確保對(duì)所有這些表的訪(fǎng)問(wèn)都受到控制,直到執(zhí)行了手動(dòng)的完整性檢查。裝載選項(xiàng)是 SET INTEGRITY PENDING CASCADE IMMEDIATE,這表明外鍵約束的 check pending 狀態(tài)被立即擴(kuò)展到有外鍵關(guān)系的所有子表中。默認(rèn)情況下,只有被裝載的表處于 check pending 狀態(tài)。這是裝載選項(xiàng) SET INTEGRITY PENDING CASCADE DEFERRED 的行為。

表空間狀態(tài)

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

這是使表空間在裝載操作完成之后可以被訪(fǎng)問(wèn)的默認(rèn)方法。另一種方法是在裝載運(yùn)行時(shí),使用 COPY YES 選項(xiàng)備份被裝載的數(shù)據(jù)。在裝載結(jié)束時(shí),將創(chuàng)建一個(gè)備份文件。

如果想避免在裝載完成后立即備份表空間,那么可以考慮另外一種選擇。裝載選項(xiàng) NONRECOVERABLE 將被裝載的表標(biāo)記為不可恢復(fù)。在裝載完成后,相關(guān)的表空間可以完全訪(fǎng)問(wèn)。DB2 不會(huì)阻止您查詢(xún)和修改表數(shù)據(jù)。但是,如果以后需要恢復(fù)表空間并且回滾到 NONRECOVERABLE 裝載選項(xiàng)之后的某個(gè)時(shí)間點(diǎn),這個(gè)被裝載的表是不可恢復(fù)的。恢復(fù)過(guò)程忽略所有與表相關(guān)的日志。您只能刪除并重新創(chuàng)建表。因此,建議在方便的時(shí)候?yàn)楸碜鱾浞荩挂延械臄?shù)據(jù)和被裝載的數(shù)據(jù)都保存在備份中。

使用 Control Center 執(zhí)行裝載

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

IMPORT 與 LOAD

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

標(biāo)簽: DB2 數(shù)據(jù)庫(kù)
主站蜘蛛池模板: 一区二区高清 | 全免一级毛片 | 欧美日韩国产一区二区三区 | 欧美一二三区 | 一区二区三区电影在线观看 | 99这里只有精品视频 | 欧美精品一区二区三区四区五区 | 欧美aⅴ | 国产情侣在线看 | 国产精品2 | 亚洲综合大片69999 | 国产小视频在线 | 久久综合伊人 | 欧美激情在线播放 | 国产精品久久久久久久久久久久冷 | 国产福利视频网站 | 日韩成人在线播放 | 欧美中文一区 | 1区2区视频| 蜜桃视频在线观看www社区 | 欧美一区在线视频 | 久久精品国产清自在天天线 | 97精品超碰一区二区三区 | 久久久高清 | 免费同性女女aaa免费网站 | 久久久久久久av麻豆果冻 | 亚洲丝袜天堂 | 日韩av在线免费 | 欧美国产精品一区二区三区 | 精品一区二区三 | 午夜男人天堂 | 欧美精品啪啪 | 欧美日韩一| 国产精品网址 | 国产精品日韩欧美一区二区三区 | 国产福利91精品 | 欧美男人天堂 | 国产精久久久久久久妇剪断 | 精品二 | 日韩av视屏| 99久久免费观看 |