Postgresql
使用新排序規則製作數據庫副本
我在 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 命令的文本文件。