需要在 Linux 中导入一个 Windows postgres 导出的数据库。在 windows 中,它的列表如下:
Name | Owner | Encoding | Collate | Ctype | Access privileges
-------------+----------+----------+--------------------+--------------------+-----------------------
the_db | postgres | UTF8 | Hebrew_Israel.1255 | Hebrew_Israel.1255 |
在恢复之前,我真的需要使用相同的 collate 和 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
。