Postgresql

使用新排序規則製作數據庫副本

  • January 5, 2022

我在 Django 中有一個由 Cloud SQL Postgres 實例支持的小型愛好項目。最近我意識到數據排序不正確,並將其辨識為排序規則設置的問題。

事實上,排序規則設置為en_US.UTF8而不是(和pl_PL.utf8之間有區別嗎?)。使用這個答案,我了解到不可能只更改排序規則 - 您必須使用新排序規則創建數據庫,然後移動數據。UTF8``utf8

我現在創建了新的數據庫:

create database db_pl WITH OWNER 'cloudsqlsuperuser' LC_COLLATE='pl_PL.utf8' LC_CTYPE='pl_PL.utf8' template template0;

我正在努力複製數據。

pg_dump會很好並且不會導致與排序規則更改相關的問題嗎?

pg_dump -h HOST -p PORT -U USER db -f db.sql

對於恢復應該pg_restore或被psql使用?需要哪些選項?

這個 pg_dump 會很好並且不會導致與排序規則更改相關的問題嗎?

pg_dump -h HOST -p PORT -U USER db -f db.sql

是的,沒關係。生成的文件已準備好播放到具有不同預設排序規則的數據庫中。

應該使用 pg_restore 還是 psql 進行恢復?需要哪些選項?

psql到已使用所需LC_COLLATE.

pg_restore僅當轉儲文件為自定義或目錄格式時才需要。否則它只是一個帶有 SQL 命令的文本文件。

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