导出 XML 数据
导出 XML 数据时,生成的 QDM(XQuery 数据模型)实例将写入与包含导出的关系数据的主数据文件不同的文件。 即使未指定 XMLFILE 和 XML TO 选项亦如此。
缺省情况下,导出的 QDM 实例将全部放入同一个 XML 文件中。 可以使用 XMLINSEPFILES 文件类型修饰符来指定将每个 QDM 实例写入不同文件。
然而,主数据文件中用 XML 数据说明符 (XDS) 表示 XML 数据。 XDS 是表示为 XML 标记(其名称是“XDS”)的字符串,它具有用于描述关于列中实际 XML 数据的信息的属性;这种信息涉及包含实际 XML 数据的文件名,以及该文件内 XML 数据的偏移量和长度。
可以使用 XML TO 和 XMLFILE 选项指定导出的 XML 文件的目标路径和基本名称。 如果指定了 XML TO 或 XMLFILE 选项,那么存储在 XDS 的 "财务" 属性中的导出 XML 文件名的格式为 xmlfilespec.xxx.xml,其中 xmlfilespec 是对 XMLFILE 选项指定的值, xxx 是由导出实用程序生成的 XML 文件的序号。 否则,已导出 XML 文件名的格式为 exportfilename.xxx.xml,其中
exportfilename 是对 EXPORT 命令指定的已导出输出文件的名称,而
xxx 是 EXPORT 实用程序生成的 XML 文件的序号。
缺省情况下,导出的 XML 文件将写入已导出数据文件的路径中。 导出的 XML 文件的缺省基本名称包括已导出数据文件的名称、追加的 3 位序号和 .xml 扩展名。
示例
在下列示例中,假定 USER.T1 表包含四列两行:
C1 INTEGER
C2 XML
C3 VARCHAR(10)
C4 XML
| C1 | C2 | C3 | C4 |
|---|---|---|---|
| 2 | <?xml version="1.0" encoding="UTF-8" ?><note time="12:00:00"><to>You</to><from> Me</from><heading>note1</heading> <body>Hello World!</body></note> | 'char1' | <?xml version="1.0" encoding="UTF-8" ?><note time="13:00:00"><to>Him</to><from> Her</from><heading>note2</heading>< body>Hello World!</body></note> |
| 4 | NULL | 'char2' | ?xml version="1.0" encoding="UTF-8" ?><note time="14:00:00">to>Us</to><from> Them</from><heading>note3</heading> <body>Hello World!</body></note> |
示例 1
以下命令将定界 ASCII(DEL)格式的 USER.T1 的内容导出到“/mypath/t1export.del”文件中。 因为没有指定 XML TO 和 XMLFILE 选项,所以将 C2 和 C4 列中包含的 XML 文档与导出的主文件“/mypath”写入同一路径中。 这些文件的基本名称为“t1export.del.xml”。 XMLSAVESCHEMA 选项指示将在导出过程中保存 XML 模式信息。
EXPORT TO /mypath/t1export.del OF DEL XMLSAVESCHEMA SELECT * FROM USER.T1导出的文件“/mypath/t1export.del”包含: 2,"<XDS FIL='t1export.del.001.xml' OFF='0' LEN='144' />","char1",
"<XDS FIL='t1export.del.001.xml' OFF='144' LEN='145' />"
4,,"char2","<XDS FIL='t1export.del.001.xml' OFF='289'
LEN='145' SCH='S1.SCHEMA_A' />"导出的 XML 文件“/mypath/t1export.del.001.xml”包含: <?xml version="1.0" encoding="UTF-8" ?><note time="12:00:00"><to>You</to>
<from>Me</from><heading>note1</heading><body>Hello World!</body>
</note><?xml version="1.0" encoding="UTF-8" ?><note time="13:00:00"><to>Him
</to><from>Her</from><heading>note2</heading><body>Hello World!
</body></note><?xml version="1.0" encoding="UTF-8" ?><note time="14:00:00">
<to>Us</to><from>Them</from>heading>note3</heading><body>
Hello World!</body></note>示例 2
以下命令将 DEL 格式的 USER.T1 的内容导出到“t1export.del”文件中。 将 C2 和 C4 列中包含的 XML 文档写入“/home/user/xmlpath”路径中。 使用基本名称“xmldocs”命名 XML 文件,并将导出的多个
XML 文档写入同一个 XML 文件。 XMLSAVESCHEMA 选项指示将在导出过程中保存 XML 模式信息。
EXPORT TO /mypath/t1export.del OF DEL XML TO /home/user/xmlpath
XMLFILE xmldocs XMLSAVESCHEMA SELECT * FROM USER.T1导出的 DEL 文件“/home/user/t1export.del”包含: 2,"<XDS FIL='xmldocs.001.xml' OFF='0' LEN='144' />","char1",
"<XDS FIL='xmldocs.001.xml' OFF='144' LEN='145' />"
4,,"char2","<XDS FIL='xmldocs.001.xml' OFF='289'
LEN='145' SCH='S1.SCHEMA_A' />"导出的 XML 文件“/home/user/xmlpath/xmldocs.001.xml”包含: <?xml version="1.0" encoding="UTF-8" ?><note time="12:00:00"><to>You</to>
<from>Me</from><heading>note1</heading><body>Hello World!</body>
</note><?xml version="1.0" encoding="UTF-8" ?><note time="13:00:00">
<to>Him</to><from>Her</from><heading>note2</heading><body>
Hello World!</body></note><?xml version="1.0" encoding="UTF-8" ?>
<note time="14:00:00"><to>Us</to><from>Them</from><heading>
note3</heading><body>Hello World!</body></note>示例 3
除了将导出的每个 XML 文档写入不同 XML 文件外,以下命令与示例 2 类似。
EXPORT TO /mypath/t1export.del OF DEL XML TO /home/user/xmlpath
XMLFILE xmldocs MODIFIED BY XMLINSEPFILES XMLSAVESCHEMA
SELECT * FROM USER.T1导出的文件“/mypath/t1export.del”包含: 2,"<XDS FIL='xmldocs.001.xml' />","char1","XDS FIL='xmldocs.002.xml' />"
4,,"char2","<XDS FIL='xmldocs.004.xml' SCH='S1.SCHEMA_A' />"导出的 XML 文件“/home/user/xmlpath/xmldocs.001.xml”包含: <?xml version="1.0" encoding="UTF-8" ?><note time="12:00:00"><to>You</to>
<from>Me</from><heading>note1</heading><body>Hello World!</body>
</note>导出的 XML 文件“/home/user/xmlpath/xmldocs.002.xml”包含: ?xml version="1.0" encoding="UTF-8" ?>note time="13:00:00">to>Him/to>
from>Her/from>heading>note2/heading>body>Hello World!/body>
/note>导出的 XML 文件“/home/user/xmlpath/xmldocs.004.xml”包含: <?xml version="1.0" encoding="UTF-8" ?><note time="14:00:00"><to>Us</to>
<from>Them</from><heading>note3</heading><body>Hello World!</body>
</note>示例 4
以下命令将 XQuery 的结果写入 XML 文件。
EXPORT TO /mypath/t1export.del OF DEL XML TO /home/user/xmlpath
XMLFILE xmldocs MODIFIED BY XMLNODECLARATION select
xmlquery( '$m/note/from/text()' passing by ref c4 as "m" returning sequence)
from USER.T1导出的 DEL 文件“/mypath/t1export.del”包含: "<XDS FIL='xmldocs.001.xml' OFF='0' LEN='3' />"
"<XDS FIL='xmldocs.001.xml' OFF='3' LEN='4' />"导出的 XML 文件“/home/user/xmlpath/xmldocs.001.xml”包含: HerThem 注: 此特定 XQuery 的结果不会生成格式正确的 XML 文档。 因此,不能将此示例中导出的文件直接导入到 XML 列中。