在某些情况下,可能需要将现有非 Unicode 数据库转换为 Unicode 数据库。
关于此任务
下列步骤演示了如何将现有非 Unicode 数据库转换为 Unicode 数据库:
开始之前
必须具有足够的可用磁盘空间以从非 Unicode 数据库中导出数据。此外,如果未在复用现有表空间,那么还需要足够的可用磁盘空间来为数据创建新的表空间。
过程
-
使用 db2move 命令导出数据:
cd <export-dir>
db2move sample export
其中 <export-dir> 是要将数据导出至的目录,而 SAMPLE 是现有数据库名称。
-
使用 db2look 命令为现有数据库生成 DDL 脚本:
db2look -d sample -e -o unidb.ddl -l -x -f
其中 SAMPLE 是现有数据库名称,而 unidb.ddl 是生成的 DDL 脚本的文件名。-l 选项为用户定义的表空间、数据库分区组和缓冲池生成 DDL,-x 选项生成授权 DDL,而 -f 选项为数据库配置参数生成更新命令。
-
创建 Unicode 数据库:
CREATE DATABASE UNIDB COLLATE USING SYSTEM_codepage_territory
其中 UNIDB 是 Unicode 数据库的名称,而 SYSTEM_codepage_territory 是语言感知的整理,它基于整理非 Unicode 数据时使用的权重表。这将确保新 Unicode 数据库中的数据的排序顺序相同。
-
编辑 unidb.ddl 脚本:
-
将出现的所有数据库名称更改为新的 Unicode 数据库名称:
CONNECT TO UNIDB
- 增大表中的字符列的列长度。当字符转换为 Unicode 时,字节数可能增多。建议您将字符列的长度增大到能容纳增加的字节数。
-
要保留现有数据库,还必须在 unidb.ddl 文件中更改表空间的文件名规范。否则,可以删除现有数据库并使用相同的表空间文件:
DROP DATABASE SAMPLE
-
通过运行已编辑的 DDL 脚本来重新创建数据库结构:
db2 -tvf unidb.ddl
-
使用 db2move 命令将数据导入到新的 Unicode 数据库中:
cd <export-dir>
db2move unidb import
其中 <export-dir> 是已导出数据的目录,而 UNIDB 是 Unicode 数据库名称。