DB2 实用程序介绍之EXPORT实用程序(3)
导出 XML 数据
随着 DB2 9.1 中引入了本地 XML 支持,导出实用程序也被扩展,以支持 XML。如果没有指定任何与 XML 相关的选项而导出一个表(用 XML 数据定义的),那么相关的 XML 数据将被写入到与导出的其他关系数据分开的一个或多个文件中。让我们看一个例子。下面的 EXPORT 命令是在 PRODUCT 表上发出的,该表中定义了一个 XML 列:
EXPORT TO prodexport.del DEL
MESSAGES msg.out
SELECT * FROM product
在这个例子中,导出实用程序将生成两个输出文件。其中一个输出文件是 prodexport.del,该文件将包含表中的关系数据和 XML data specifier (XDS)。
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 文件的内容。
使用 XML 选项和修饰符导出 XML 数据
与导出大型对象一样,您可以指定被导出 XML 文档的存储路径,还可以指定输出文件的文件名。考虑下面的例子:
EXPORT TO prodexport.del DEL
XML TO d:\xmlpath
XMLFILE proddesc
MODIFIED BY XMLINSEPFILES XMLNODECLARATION XMLCHAR
XMLSAVESCHEMA
MESSAGES msg.out
SELECT * FROM product
在这个例子中,PRODUCT 表的关系数据被导出到 prodexport.del 文件。然后,所有 XML 数据都被写入到 XML TO 子句指定的目录 d:\xmlpath 中。包含 XML 数据的文件被命名为 proddesc.ext.xml,其中 ext 是一个序列号(例如 proddesc.001.xml、proddesc.002.xml、proddesc.003.xml 等)。基本文件名是用 XMLFILE 选项定义的。
您也许还注意到,这个例子中使用了一些修饰符。下面对所有与 XML 相关的修饰符作一个总结。
- XMLINSEPFILES 导致导出实用程序将导出的每个 XML 文档写入到不同的 XML 文件中。
- XMLNODECLARATION 表明导出 XML 数据无需使用 XML 声明标记。默认情况下,XML 标记被写在 XML 文档的开头,并包括一个编码属性。
- XMLCHAR 表明 XML 数据以字符码页编码。默认情况下,XML 数据是以 Unicode 编码的。当使用这个修饰符的时候,使用的是 codepage 文件类型修饰符或应用程序码页。
- XMLGRAPHIC 表明无论是 codepage 文件类型修饰符还是应用程序码页,导出的 XML 数据将以 UTF-16 码页编码。注意,这个例子中没有使用 XMLGRAPHIC。
我们要介绍的最后一个选项是 XMLSAVESCHEMA。当插入一个 XML 文档时,可以用一个 XML 模式对其进行验证。XMLSAVESCHEMA 选项导致导出实用程序还保存用于每个导出的 XML 数据的 XML 模式。那个模式的全限定 SQL 标识符将被存储为相应的 XML data specifier(XDS)中的一个 SCH 属性。注意,如果没有用 XML 模式验证导出的 XML 文档,或者该模式对象不再存在于数据库中,那么相应的 XDS 中将不包括 SCH 属性。
下面显示了前面的导出例子的结果。