程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> DB2實用程序介紹之EXPORT實用程序

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

編輯:DB2教程

EXPORT實用程序概述

EXPORT實用程序使用一條SQL SELECT語句或XQUERY語句將數據從數據庫表提取到一個文件中。數據可以被導出到DEL、IXF或WSF文件中。建議在export中包括MESSAGES子句,以捕獲導出過程中遇到的錯誤、警告和包含有用信息的消息。

要想成功地調用EXPORT實用程序,必須擁有SYSADM或DBADM權限,或者擁有EXPORT命令中所訪問的表或視圖上的CONTROL或SELECT特權。

對於DB2 9.1中新引入的基於標簽的訪問控制(LBAC)支持,需要注意LBAC憑證,它可能允許也可能不允許訪問受保護的行和/或列。當從一個包含受保護行的表中導出數據時,LBAC憑證可能限制被導出的行。如果您不具備對某個行的讀訪問權限,那麼就不能導出這個行。這種情況下並不會給出任何錯誤或警告。然而,如果LBAC憑證不允許讀取導出中包含的一個或多個受保護的列,那麼導出將失敗,並返回一個錯誤。

我們來看看一個簡單的導出的例子。下面的命令將SELECT語句的結果導出到一個DEL格式的文件中。消息文件msg.out用於記錄有用的信息和遇到的錯誤或警告:


EXPORT TO myfile.del OF DEL
MESSAGES msg.out
SELECT staff.name, staff.dept, org.location
FROM org, staff
WHERE org.deptnumb = staff.dept;

文件類型修飾符

在前面的例子中,數據被提取到一個DEL格式的文件中。默認情況下,列值之間以逗號(,)隔開,字符串以雙引號(")括起來。如果被提取的數據已經包含逗號和雙引號,那麼會怎麼樣呢?在這種情況下,導入或裝載實用程序不可能確定哪些符號是實際的數據,哪些符號是分界符。為了定制EXPORT如何操作,可以使用MODIFIED BY子句,並指定您想用文件類型修飾符更改哪些方面。下面是帶MODIFIED BY子句的EXPORT命令:


EXPORT TO file_name OF file_type
MODIFIED BY file_type_modifIErs
MESSAGES message_file
select_statement

在Command Reference Guide中的EXPORT小節下,可以找到文件類型修飾符的完整列表。下面列出了一些常用的修飾符:

chardelx

指定x作為新的單字符字符串分界符。默認值是一個雙引號(")。

coldelx

指定x作為新的單字符列分界符。默認值是一個逗號(,)。

codepage=x

指定x(一個ASCII字符串)作為輸出數據的新的碼頁(code page)。在導出操作期間,字符數據被從應用程序碼頁轉換成這種碼頁。

timestampformat="x"

x是源表中時間戳的格式。

考慮這個例子:

EXPORT TO myfile.del OF DELMODIFIED BY chardel! coldel@ codepage=1208 timestampformat="yyyy.mm.dd hh:mm tt"MESSAGES msg.outSELECT * FROM schedule

前面的命令按照以下方式將SCHEDULE表中的數據導出到DEL格式的文件中:

字符串以感歎號(!)括起來。
列之間以@符號分隔開。
將字符串轉換成碼頁1208。

SCHEDULE表中用戶定義的時間戳的格式為yyyy.mm.dd hh:mm tt。

用LOBSINFILE修飾符導出大型對象

當導出包含大型對象列的表時,默認情況下只能導出LOB數據的前32KB。對象的這一部分與其他列數據放在同一個文件中。為了完整地導出LOB數據,並將它們與其他列數據分別存儲在不同的文件中,必須使用LOB選項。在DB2 V9.1中,可以指定是將多個LOB值連接起來並導出到同一個輸出文件中,還是將每個LOB值導出到一個單獨的文件中。

下面是一個帶LOBSINFILE修飾符的EXPORT命令,該修飾符將導致導出實用程序將多個LOB值寫到同一個輸出文件中。


EXPORT TO file_name OF file_type
LOBS TO lobfile_directory_1, lobfile_directory_2, ...
LOBFILE lobfilename
MODIFIED BY LOBSINFILE
MESSAGES message_file
select_statement

LOBS TO子句指定LOB文件將被存儲到的目錄。如果沒有發現LOBS TO子句,那麼LOB數據將被存儲到當前的工作目錄。注意,在前面的命令中,可以指定不止一個路徑作為LOB文件目標目錄。每個LOB路徑至少有一個文件,每個文件至少包含一個LOB。

有時候需要使用用戶指定的文件名來標識被提取出來的LOB文件。LOBFILE子句可以用於這一目的。每個LOB文件將有一個序列號作為文件擴展名(例如lobfile.001、lobfile.002、lobfile.003等)。

當指定LOBS TO或LOBFILE選項時,將隱式地激活LOBSINFILE行為。但是,最好顯式地指定LOBSINFILE修飾符,以避免與LOBSINSEPFILES修飾符行為混淆,稍後會談到後一種修飾符。


  • DB2常用命令列表(1)
  • 曾經培訓寫的內容:db2常用命令總結
  • DB2常用傻瓜問題1000問(之一)
  • DB2中內存的使用(1)
  • DB2 的表空間
  • DB2上機操作指令指南
  • DB2 9安裝方法簡介
  • DB2認證考試大綱
  • DB2常用傻瓜問題1000問(之四)
  • DB2常用傻瓜問題1000問(之二)

LOB Location SpecifIEr

當使用LOBSINFILE修飾符導出大型對象時,會生成一個LOB Location SpecifIEr (LLS),後者將被存儲在導出輸出文件中。LLS是一個字符串,用於表明在哪裡可以找到LOB數據。LLS的格式為filename.ext.lob.nnn.mmm/。我們來更詳細地看看這個格式:

filename.ext.lob是包含LOB數據的文件的文件名。ext是一個序列號,如前所述。

nnn是大型對象在LOB文件中的偏移位置,以字節計。

mmm是大型對象的長度,以字節計。

例如,resume.001.lob.1257.2415/表明大型對象位於resume.001.lob文件中,實際的LOB數據從文件的第1257個字節開始,其長度為2,415個字節。

為了清楚地說明LLS的用法,可以看看下面的例子。


EXPORT TO empresume.del DEL
LOBS TO d:\lob1\
LOBFILE resume
MODIFIED BY LOBSINFILE
MESSAGES msg.out
SELECT * FROM emp_resume

DB2實用程序介紹之EXPORT實用程序(圖一)

圖1

使用LOBSINSEPFILES修飾符導出大型對象

如前面的小節所示,您還可以選擇完整地導出LOB數據並將它們分別存儲在單獨的文件中。前面描述的LOB選項還是一樣的,不同的是這裡使用了LOBSINSEPFILES修飾符。

下面是使用LOBSINSEPFILES修飾符的一個例子。


EXPORT TO empresume.del DEL
LOBS TO d:\lob1\
LOBFILE resume
MODIFIED BY LOBSINSEPFILES
MESSAGES msg.out
SELECT * FROM emp_resume

上面的EXPORT命令將把LOB數據寫入到具有resume.ext.lob文件名的文件中(即resume.001.lob、resume.002.lob、resume.003.lob等),這些文件都位於LOB路徑d:\lob1中。

導出XML(標准化越來越近了)數據

隨著DB2 9.1中引入了本地xml(標准化越來越近了)支持,導出實用程序也被擴展,以支持xml(標准化越來越近了)。如果沒有指定任何與xml(標准化越來越近了)相關的選項而導出一個表(用xml(標准化越來越近了)數據定義的),那麼相關的xml(標准化越來越近了)數據將被寫入到與導出的其他關系數據分開的一個或多個文件中。讓我們看一個例子。下面的EXPORT命令是在PRODUCT表上發出的,該表中定義了一個XML(標准化越來越近了)列:

EXPORT TO prodexport.del DELMESSAGES msg.outSELECT * FROM product

在這個例子中,導出實用程序將生成兩個輸出文件。其中一個輸出文件是prodexport.del,該文件將包含表中的關系數據和XML(標准化越來越近了) data specifIEr (XDS)。

DB2實用程序介紹之EXPORT實用程序(圖二)

圖2

XDS是用名為“XDS”的一個xml(標准化越來越近了)標記表示的字符串。它具有一些屬性,用於描述關於列中實際的XML(標准化越來越近了)數據的信息。下面是XDS字符串中可能出現的一些屬性:

FIL指定包含XML(標准化越來越近了)數據的文件的文件名。
OFF指定XML(標准化越來越近了)數據在FIL屬性指定的文件中的字節偏移量。
LEN指定FIL屬性中指定的文件中的XML(標准化越來越近了)數據的字節長度。
SCH指定用於驗證xml(標准化越來越近了)文檔的XML(標准化越來越近了)模式的全限定SQL標識符。下一屏中將討論這個屬性。

從前面prodexport.del的內容中可以看出,第一個xml(標准化越來越近了)數據存儲在prodexport.del.001.XML(標准化越來越近了)中,從0字節偏移位置開始,長度為252個字節。

在這個例子中,導出實用程序生成的另一個文件是prodexport.del.001.xml(標准化越來越近了),該文件包含xml(標准化越來越近了)內容。導出的每個xml(標准化越來越近了)數據都被連接在一起寫入到這個文件中。下面是prodexport.del.001.XML(標准化越來越近了)文件的內容。

DB2實用程序介紹之EXPORT實用程序(圖三)

圖3


訪問 http://www.cncms.com.cn/db2/q384840.Html
  • DB2常用命令列表(1)
  • 曾經培訓寫的內容:db2常用命令總結
  • DB2常用傻瓜問題1000問(之一)
  • DB2中內存的使用(1)
  • DB2 的表空間
  • DB2上機操作指令指南
  • DB2 9安裝方法簡介
  • DB2認證考試大綱
  • DB2常用傻瓜問題1000問(之四)
  • DB2常用傻瓜問題1000問(之二)

使用xml(標准化越來越近了)選項和修飾符導出XML(標准化越來越近了)數據

與導出大型對象一樣,您可以指定被導出XML(標准化越來越近了)文檔的存儲路徑,還可以指定輸出文件的文件名。考慮下面的例子:

EXPORT TO prodexport.del DELxml(標准化越來越近了) TO d:\xml(標准化越來越近了)pathxml(標准化越來越近了)FILE proddescMODIFIED BY xml(標准化越來越近了)INSEPFILES xml(標准化越來越近了)NODECLARATION xml(標准化越來越近了)CHARXML(標准化越來越近了)SAVESCHEMAMESSAGES msg.outSELECT * FROM product

在這個例子中,PRODUCT表的關系數據被導出到prodexport.del文件。然後,所有xml(標准化越來越近了)數據都被寫入到xml(標准化越來越近了) TO子句指定的目錄d:\xml(標准化越來越近了)path中。包含xml(標准化越來越近了)數據的文件被命名為proddesc.ext.xml(標准化越來越近了),其中ext是一個序列號(例如proddesc.001.xml(標准化越來越近了)、proddesc.002.xml(標准化越來越近了)、proddesc.003.xml(標准化越來越近了)等)。基本文件名是用XML(標准化越來越近了)FILE選項定義的。

您也許還注意到,這個例子中使用了一些修飾符。下面對所有與XML(標准化越來越近了)相關的修飾符作一個總結。

xml(標准化越來越近了)INSEPFILES導致導出實用程序將導出的每個xml(標准化越來越近了)文檔寫入到不同的XML(標准化越來越近了)文件中。
xml(標准化越來越近了)NODECLARATION表明導出xml(標准化越來越近了)數據無需使用xml(標准化越來越近了)聲明標記。默認情況下,xml(標准化越來越近了)標記被寫在XML(標准化越來越近了)文檔的開頭,並包括一個編碼屬性。
xml(標准化越來越近了)CHAR表明xml(標准化越來越近了)數據以字符碼頁編碼。默認情況下,XML(標准化越來越近了)數據是以Unicode編碼的。當使用這個修飾符的時候,使用的是codepage文件類型修飾符或應用程序碼頁。
xml(標准化越來越近了)GRAPHIC表明無論是codepage文件類型修飾符還是應用程序碼頁,導出的xml(標准化越來越近了)數據將以UTF-16碼頁編碼。注意,這個例子中沒有使用XML(標准化越來越近了)GRAPHIC。

我們要介紹的最後一個選項是xml(標准化越來越近了)SAVESCHEMA。當插入一個xml(標准化越來越近了)文檔時,可以用一個xml(標准化越來越近了)模式對其進行驗證。xml(標准化越來越近了)SAVESCHEMA選項導致導出實用程序還保存用於每個導出的xml(標准化越來越近了)數據的xml(標准化越來越近了)模式。那個模式的全限定SQL標識符將被存儲為相應的xml(標准化越來越近了) data specifIEr(XDS)中的一個SCH屬性。注意,如果沒有用xml(標准化越來越近了)模式驗證導出的XML(標准化越來越近了)文檔,或者該模式對象不再存在於數據庫中,那麼相應的XDS中將不包括SCH屬性。

下面顯示了前面的導出例子的結果。

DB2實用程序介紹之EXPORT實用程序(圖四)

圖4

用一個XQuery導出XML(標准化越來越近了)數據

EXPORT命令還允許指定一個XQuery語句,使導出實用程序將一個XQuery的結果導出到一個XML(標准化越來越近了)文件中。我們來看看下面的例子。

EXPORT TO custexport.del DELxml(標准化越來越近了) TO d:\xml(標准化越來越近了)pathxml(標准化越來越近了)FILE custphoneMODIFIED BY xml(標准化越來越近了)INSEPFILES xml(標准化越來越近了)NODECLARATIONMESSAGES msg.outSELECT XML(標准化越來越近了)QUERY ('$doc/customerinfo/phone' PASSING INFO AS "doc") FROM customer

前面例子中的XQuery返回存儲在CUSTOMER表的xml(標准化越來越近了)列INFO下的每個客戶的電話號碼。這裡討論的所有xml(標准化越來越近了)選項和修飾符都適用於XQuery語句。因此,這個例子將為XQuery的每個結果生成單獨的xml(標准化越來越近了)文檔。這個文件存放在d:\xml(標准化越來越近了)path中,並且以custphone.ext.xml(標准化越來越近了)命名,其中ext是一個序列號。此外,文檔中不包括XML(標准化越來越近了)聲明標記。

下面是導出的一個XML(標准化越來越近了)文檔的內容。

DB2實用程序介紹之EXPORT實用程序(圖五)

圖5

從Control Center中導出

除了從DB2命令行執行EXPORT命令外,還可以使用Control Center進行導出。從Control Center這個工具中,可以指定導出實用程序支持的所有選項和子句,例如大型對象和XML(標准化越來越近了)數據。如下圖所示,Schedule選項卡允許您創建一個任務,並調度在給定時間運行的導出。

DB2實用程序介紹之EXPORT實用程序(圖六)

圖6


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved