向 Postgres 数据库添加新的排序规则

Jos*_*uis 6 postgresql collation localization

我有这些整理:

postgres=# select * from pg_collat​​ion;
  姓名 | collnamespace | 领主| collencoding | 整理 | 类型  
------------+--------------+-----------+--------- -----+-------------+------------
 默认 | 11 | 10 | -1 | |
 C | 11 | 10 | -1 | C | C
 POSIX | 11 | 10 | -1 | POSIX | POSIX
 zh_CN | 11 | 10 | 6 | en_US.utf8 | en_US.utf8
 en_US.utf8 | 11 | 10 | 6 | en_US.utf8 | en_US.utf8
 ucs_basic | 11 | 10 | 6 | C | C
(6 行)

我在我的系统上安装了一个新的语言环境,我想在 postgres 上使用它。似乎安装新整理的唯一方法是使用该initdb命令,但它需要创建一个pg_dumpall,删除 postgres 数据目录,运行initdb并从转储中恢复所有数据。没有更简单的解决方案吗?

Erw*_*ter 7

您不需要创建新的数据库集群。您可以CREATE COLLATION在 Postgres 9.1 或更高版本中使用。手册中的示例:

要从操作系统语言环境 fr_FR.utf8 创建归类(假设当前数据库编码为 UTF8):

CREATE COLLATION french (LOCALE = 'fr_FR.utf8');
Run Code Online (Sandbox Code Playgroud)

请务必阅读手册中的管理整理一章以了解详细信息。特别是:

在任何特定数据库中,只有使用该数据库编码的排序规则才有意义。中的其他条目pg_collation将被忽略。

即,排序规则必须与您的数据库编码匹配才能使用。
但还有更多。阅读。