Postgresql

向 Postgres 數據庫添加新的排序規則

  • June 25, 2015

我有這些排序規則:

postgres=# select * from pg_collat​​ion;
姓名 | 命名空間 | 所有者 | 編碼 | 整理 | colctype 
------------+---------------+-----------+--------------+-------------+-----------
預設 | 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 上使用它。似乎安裝新 collat​​e 的唯一方法是使用initdb命令,但它需要創建一個pg_dumpall,刪除 postgres 數據目錄,執行initdb並從轉儲中恢復所有數據。沒有更簡單的解決方案嗎?

您無需創建新的數據庫集群。您可以CREATE COLLATION在 Postgres 9.1 或更高版本中使用。手冊中的範例:

從作業系統區域設置 fr_FR.utf8 創建排序規則(假設目前數據庫編碼為 UTF8):

CREATE COLLATION french (LOCALE = 'fr_FR.utf8');

請務必閱讀手冊中的管理排序規則一章以了解詳細資訊。特別是:

在任何特定數據庫中,只有使用該數據庫編碼的排序規則才有意義。中的其他條目pg_collation將被忽略。

即,排序規則必須與您的數據庫編碼相匹配才能可用。

但還有更多。閱讀。

引用自:https://dba.stackexchange.com/questions/105147