Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.0 (中文) » SQL Anywhere 服务器 - 数据库管理 » 配置数据库 » 国际语言和字符集 » 有关国际语言和字符集的任务

 

将数据库从一种归类更改为另一种归类

将数据库更改为另一种归类需要重建数据库。归类是在数据库创建时选择的,且无法进行更改。

 ♦  更改归类
  1. 按如下方式确定现有数据库的字符集:

    SELECT DB_PROPERTY( 'CharSet' );

    对于 SQL Anywhere 的早期版本,此属性可能不存在。归类名称也暗示了字符集。例如,归类 1252LATIN1 使用代码页 1252。

  2. 确定现有数据库中数据的字符集。

    此字符集应该与数据库字符集相同或与其兼容。若非如此,就有充分的理由重建数据库,但是在重建过程中需要非常小心。

    特别是,如果您一直都在将采用 850LATIN1 归类的数据库与 SQL Anywhere 的早期版本一起使用,而这些版本不支持字符集转换(版本 5 和更早版本)或在缺省情况下禁用字符集转换(版本 6 和 7),并且您的客户端应用程序是普通 Windows 应用程序,则在您的数据库中可能会存在代码页 1252 字符数据,而该数据库期望的数据应采用代码页 850。对此情况的简单测试就是使用带有 ENCODING 选项的 UNLOAD TABLE 卸载某些字符数据,然后用 Windows 记事本查看它。如果重音数据正确,则数据库中的字符数据与 Windows ANSI 代码页匹配,对于英语和其它西欧语言,该代码页为 1252。如果数据在基于 DOS 的编辑器中显示正确,则字符数据与 Windows OEM 代码页匹配,该代码页很可能是 437 或 850。

  3. 卸载数据库。

    如果数据字符集与数据库字符集不兼容,在不进行字符集转换的情况下卸载数据就显得至关重要。根据正在使用的 SQL Anywhere 版本,可以使用 dbunload 内部卸载功能,也可以使用 UNLOAD TABLE 语句手工卸载数据。

  4. 创建新数据库,指定要使用的归类和字符集。

  5. 将数据装载到新的数据库中。

    如果卸载的数据和模式 (reload.sql) 与用来进行重装的计算机字符集匹配,则可以使用 dbunload 的外部重装选项。数据将自动转换为正确的数据库字符集。

    如果数据的编码与数据库的字符集不匹配,并且装载数据时使用的是 LOAD TABLE 语句(内部重装),则必须使用 ENCODING 子句;在缺省情况下,数据库服务器不会对使用 LOAD TABLE 语句装载的数据执行字符集转换。

    如果数据的编码与正在使用的计算机的代码页不匹配,并且装载时使用的是 INPUT 语句(外部重装),则必须使用 ENCODING 子句;否则,数据库服务器会假定数据采用计算机的本地字符集。

 另请参见