gpt4 book ai didi

postgresql - pg_dump/pg_restore lc_collat​​e English_United States.1252 Windows Linux迁移

转载 作者:行者123 更新时间:2023-12-02 19:54:01 25 4
gpt4 key购买 nike

我要用

pg_dump -j 8 -Fd -f /tmp/newout.dir fsdcm_external

不转储 LC_COLLATE('English_United States.1252'),因为它与我的 Linux 机器不兼容。

我最初使用以下过程成功迁移了一个 LC_COLLATE = 'English_United States.1252' 的数据库:

@Windows 机器:

pg_dump postgres > "/drive/folder/options.bak"

@Linux 机器:

psql postgres < "/drive/folder/backup.bak"

但是,我更喜欢使用“作业”进行并行转储和恢复(如 A faster way to copy a postgresql database (or the best way) 中所示),因此我尝试了:

@Windows 机器:

pg_dump -j 8 -Fd -f /tmp/newout.dir fsdcm_external

@Linux 机器:

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_dump 或 pg_restore 中指定避免复制 LC_COLLATE 设置?例如,我可以只转储表、数据和索引吗?

最佳答案

您的问题是 pg_restore-C 选项。

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

createdb fsdcm_external
pg_restore -j 8 --format=d -d fsdcm_external /tmp/newout.dir/

关于postgresql - pg_dump/pg_restore lc_collat​​e English_United States.1252 Windows Linux迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57492405/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com