Postgresql
向 Postgres 數據庫添加新的排序規則
我有這些排序規則:
postgres=# select * from pg_collation; 姓名 | 命名空間 | 所有者 | 編碼 | 整理 | 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 上使用它。似乎安裝新 collate 的唯一方法是使用
initdb
命令,但它需要創建一個pg_dumpall
,刪除 postgres 數據目錄,執行initdb
並從轉儲中恢復所有數據。沒有更簡單的解決方案嗎?
您無需創建新的數據庫集群。您可以
CREATE COLLATION
在 Postgres 9.1 或更高版本中使用。手冊中的範例:從作業系統區域設置 fr_FR.utf8 創建排序規則(假設目前數據庫編碼為 UTF8):
CREATE COLLATION french (LOCALE = 'fr_FR.utf8');
請務必閱讀手冊中的管理排序規則一章以了解詳細資訊。特別是:
在任何特定數據庫中,只有使用該數據庫編碼的排序規則才有意義。中的其他條目
pg_collation
將被忽略。即,排序規則必須與您的數據庫編碼相匹配才能可用。
但還有更多。閱讀。