Postgresql

postgres:恢復數據庫時我真的需要使用 Collat e 和 Ctype 嗎?

  • November 17, 2020

需要在 Linux 中導入一個 Windows postgres 導出的數據庫。在 windows 中,它的列表如下:

   Name     |  Owner   | Encoding |      Collate       |       Ctype        |   Access privileges
-------------+----------+----------+--------------------+--------------------+-----------------------
  the_db    | postgres | UTF8     | Hebrew_Israel.1255 | Hebrew_Israel.1255 |

在恢復之前,我真的需要使用相同的 collat​​e 和 ctype 創建數據庫嗎?我已經測試過了,我可以通過創建一個新的數據庫來導入,這將使它使用它的預設值:

  Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
the_db    | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
  • 恢復成功。但是,恐怕因為應用程序,以後與db互動時不會導致任何錯誤。
  • 紳士你有什麼考慮?

主要考慮的是,如果您使用ORDER BY字元串數據類型的列,則結果將根據數據庫排序規則進行排序,除非您COLLATE為列定義指定顯式子句或使用ORDER BY. 如果您的使用者期望根據希伯來語排序規則對結果進行排序,他們可能會不高興。

要在 Unix 上獲得希伯來語排序規則,請使用 locale he_IL.utf8

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