DB2 实用程序介绍之IMPORT实用程序(2)
导入 XML 数据
为了导入 XML 文件,可以使用 XML FROM 选项指定 XML 文件所在的一个或多个路径。否则,导入实用程序将在当前目录中查找 XML 文件。您可以选择如何解析 XML 文档;是去掉空白还是保留空白。如果没有指定 XMLPARSE 选项,那么将根据 CURRENT XMLPARSE OPTION 专用寄存器来决定对 XML 文档的解析行为。下面是关于 XML FROM 和 XMLPARSE 选项的一个例子。
IMPORT FROM myfile.ixf OF IXF
XML FROM d:\xmlpath
XMLPARSE PRESERVE WHITESPACE
MESSAGES msg.out
INSERT INTO newtable
当插入或更新一个 XML 文档时,您可能想确定 XML 文档的结构、内容和数据类型是否有效。导入实用程序还通过 XMLVALIDATE 选项提供了对 XML 验证的支持。下面是可用的三种方法。
- USING XDS —— 回想一下,您可以导出 XML 模式信息并将它存储在 XML Data Specifier (XDS) 的 SCH 属性中。SCH 属性的值将用于执行验证。如果在 XDS 中没有 SCH 属性,则考虑 DEFAULT、IGNORE 或 MAP 三者之中的一个值。
- USING SCHEMA schema-sqlid —— 使用这个子句中指定的 XML 模式。
- USING SCHEMALOCATION HINTS —— 根据源 XML 文档中 XML 模式位置提示所标识的模式来验证 XML 文档。
IMPORT FROM myfile.ixf OF IXF
XML FROM d:\xmlpath
XMLPARSE PRESERVE WHITESPACE
XMLVALIDATE USING XDS
DEFAULT S1.SCHEMA_A
IGNORE (S1.SCHEMA_X, S1.SCHEMA_Y, S1.SCHEMA_Z)
MAP (S1.SCHEMA_A, S1.SCHEMA_B)
COMMITCOUNT 500 RESTARTCOUNT 30000
MESSAGES msg.out
INSERT INTO newtable
前面的 IMPORT 命令将:
- 插入 myfile.ixf 和 d:\xmlpath 下的 XML 文件中的数据。
- 当解析 XML 文档时,保留空白。
- 使用 XDS 的 SCH 属性标识的模式信息对每个 XML 文档进行验证。但是,如果用于任何特定行的 XDS 没有包含 SCH 属性,那么使用 S1.SCHEMA_A。
- 如果 SCH 属性被指定为 S1.SCHEMA_X 或 S1.SCHEMA_Y 或 S1.SCHEMA_Z,那么对于导入的 XML 文档不执行验证。
- 如果 SCH 属性被指定为 S1.SCHEMA_A,它将被映射到 S1.SCHEMA_B。注意,尽管 DEFAULT 子句指定了 S1.SCHEMA_A,但是后面的任何映射都将不会执行。
- 每导入 500 行之后,导入实用程序将发出一次提交命令。
- 导入操作从第 30,001 条记录开始。前 30,000 条记录被忽略。
- 任何错误、警告和包含信息的消息都写到 msg.out 文件中。
- 将新数据插入(或附加)到 newtable 中。
这个例子只是让您对如何验证导入的 XML 文档有一些认识。DB2 Information Center 中还有更多的例子来演示 XMLVALIDATE 选项的威力。