DB2 实用程序介绍之EXPORT实用程序(2)
用 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 中。