Postgresql pg_dump/pg_restore lc_collate English_United United States.1252 Windows Linux迁移

Postgresql pg_dump/pg_restore lc_collate English_United United States.1252 Windows Linux迁移,postgresql,Postgresql,我想用 pg_dump -j 8 -Fd -f /tmp/newout.dir fsdcm_external 没有转储LC_COLLATE'English_United.1252',因为它与我的Linux机器不兼容 我最初使用LC_COLLATE='English_United United.1252'通过以下过程成功迁移了一个DB: @Windows计算机: pg_dump postgres > "/drive/folder/options.bak" pg_dump -j 8 -Fd

我想用

pg_dump -j 8 -Fd -f /tmp/newout.dir fsdcm_external
没有转储LC_COLLATE'English_United.1252',因为它与我的Linux机器不兼容

我最初使用LC_COLLATE='English_United United.1252'通过以下过程成功迁移了一个DB:

@Windows计算机:

pg_dump postgres > "/drive/folder/options.bak"
pg_dump -j 8 -Fd -f /tmp/newout.dir fsdcm_external
@Linux计算机:

psql postgres < "/drive/folder/backup.bak"
pg_restore -j 8 --format=d -C -d postgres /tmp/newout.dir/
@Linux计算机:

psql postgres < "/drive/folder/backup.bak"
pg_restore -j 8 --format=d -C -d postgres /tmp/newout.dir/
我希望有相同的LC_COLLATE中性转储,但我收到了以下错误:

pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 3498; 1262        
12401 DATABASE postgres postgres
pg_restore: [archiver (db)] could not execute query: ERROR:                  
invalid locale name: "English_United States.1252"
Command was: CREATE DATABASE postgres WITH TEMPLATE = template0 
ENCODING = 'UTF8' LC_COLLATE = 'English_United States.1252' 
LC_CTYPE = 'E...
如何在pg_转储或pg_还原中指定不复制LC_整理设置?例如,我可以只转储表、数据和索引吗?

您的问题是pg_restore的-C选项

相反,首先创建数据库,然后在不使用-C的情况下运行pg_restore:

createdb fsdcm_外部 pg_restore-j 8-format=d-d fsdcm_external/tmp/newout.dir/
我花了3个小时试图用PGAdmin GUI进行恢复,但它不让我恢复。感谢上帝的命令行。谢谢劳伦兹

对于正在阅读的其他人,请在终端Mac中运行它。不是在pysql中。您可能需要将-U postgres指定为默认用户

pg_restore-U postgres-exit on error-verbose-dbname=yourdbname/Users/gc/Downloads/file.tar