导出 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
表 1. USER.T1
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 列中。