如何更改现有数据的区域设置

时间:2014-07-16 06:44:12

标签: postgresql locale

我有一个PostgreSQL数据库。它有一个存储菜单项(标签)的表。这些菜单项以英语存储。有没有办法通过使用本地化功能将这些存储的项目(100+)转换为日语?因为我的客户框是UNIX,其语言环境设置为日语。

1 个答案:

答案 0 :(得分:1)

在行之间阅读,我说你的数据库是iso-8869-1WIN1252编码,这是英文语言的1字节编码。

如果是这样的话,虽然您可以转码为日语特定的编​​码,但它们大部分都非常有限 - 无论是英语(罗马)字符的覆盖范围,还是汉字/平假名的覆盖范围。日语在1字节编码中并不能很好地工作。 Shift-JIS试图解决这个问题,但它是一个糟糕的文本编码,PostgreSQL将拒绝使用它。

相反,将数据库转换为utf-8。这将支持您现有的所有内容和所有新内容。 UTF-8适用于任何语言。

这样做:

CREATE DATABASE mydb_new ENCODING 'UTF-8' 
    LC_COLLATE 'jp_JA.UTF-8' LC_CTYPE 'jp_JA.UTF-8';

然后pg_dump旧数据库,pg_restore到新数据库。之后,您可以重命名数据库以交换它们。

latin-1中的所有字符在utf-8中都有效,因此加载转储时不会出现问题。

您/您的客户可能需要生成/安装ja_JP.UTF-8语言环境(如果在Linux / BSD上)。如何做到这一点有点特定于发行版/平台。