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

use*_*834 6 postgresql locale

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

Cra*_*ger 4

从字里行间看,我想说你的数据库采用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';
Run Code Online (Sandbox Code Playgroud)

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

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

您/您的客户可能需要生成/安装ja_JP.UTF-8区域设置(如果在 Linux/BSD 上)。如何做到这一点在某种程度上是特定于发行版/平台的。