非 Unicode 数据库中的 XML
2009-11-28 00:00:00 来源:WEB开发网V9 中的 XML 支持
在 DB2 9 中,将 XML 数据包括在数据库中的惟一方法是让数据库使用 UTF-8 码集。即使 XML 数据中只包含 ASCII 代码点,这个限制也仍然有效。XML 是以二进制格式存储在数据库中的,文本节点被存储为 UTF-8 代码点。在 DB2 9 中,不会对 XML 文档进行转换,因此必须以一系列的 UTF-8 字节的形式将 XML 文档插入到数据库中。 DB2 Viper 2 版解除了这一限制,即所有使用 pureXML 特性的数据库必须以 Unicode 方式创建。本文解释非 Unicode 数据库中的 XML 支持,以及如何在保证数据完整性的情况下安全地插入和查询 XML 文档。
例子场景:在不必迁移至 Unicode 码集的情况下迁移至 pureXML
假设您是一个已有的非 Unicode DB2 数据库的数据库管理员(DBA),该数据库包含一个用于编目图书馆中的书籍的表。目前,这个表具有以下形式:
清单 1. 示例关系模式
CREATE TABLE BOOKCAT
(TITLE VARCHAR(400) NOT NULL,
AUTHOR_LAST VARCHAR(50) NOT NULL,
AUTHOR_FIRST VARCHAR(50),
PUBLISHER VARCHAR(100),
DATE_PUB DATE NOT NULL,
ISBN BIGINT NOT NULL PRIMARY KEY,
KEYWORD1 CHAR(20),
KEYWORD2 CHAR(20),
FIRST_PARA CLOB(2K));
然而,在非 Unicode 关系表中,对于表中的数据有一些限制。如果书的题目或文本包含当前数据库的字符集以外的字符会怎样?为什么要将这个表限制为每本书只有两个关键字?如果对于一个新的条目,关键字太大怎么办?如果一本书有一个未知的出版日期,或者有多个作者,怎么办?
更多精彩
赞助商链接