用 LOBSINFILE 修飾符導出大型對象
當導出包含大型對象列的表時,默認情況下只能導出 LOB 數據的前 32 KB。對象的這一部分與其他列數據放在同一個文件中。為了完整地導出 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 修飾符行為混淆,稍後會談到後一種修飾符。
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
使用 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 中。