gpt4 book ai didi

postgresql - 如何让 pg_dump -s 包含 CREATE DATABASE 命令?

转载 作者:行者123 更新时间:2023-11-29 11:15:50 25 4
gpt4 key购买 nike

我有一个 postgresql 数据库服务器,里面有多个数据库。

postgres=# \list
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
--------------+----------+-----------+---------+-------+-----------------------
test1 | postgres | UTF8 | C | C |
test2 | postgres | SQL_ASCII | C | C |
test3 | postgres | SQL_ASCII | C | C |
test4 | postgres | SQL_ASCII | C | C |
template0 | postgres | SQL_ASCII | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | SQL_ASCII | C | C | postgres=CTc/postgres+
| | | | | =c/postgres
(6 rows)

我需要一种方法来为我要转储的数据库创建一个转储文件,其中包含模式(包括 CREATE DATABASE 语句)。

到目前为止,我已经弄明白了:

pg_dump -s -U postgres -d test1 > test1_only.sql

将为 test1 数据库创建模式,但它不包括 CREATE DATABASE 命令。我能够让 CREATE DATABASE 命令出现的唯一方法是:

pg_dumpall -s -U postgres > /schema_alldatabases.sql 

将转储所有数据库的架构。但这当然包括所有数据库的所有模式。在我要恢复此文件的服务器上,我已经有 test3 和 test4 ...我不想覆盖它们,因为模式不同。

有没有办法让 pg_dump -s 命令包含 CREATE DATABASE 命令?或者,我是否应该只使用 pg_dumpall 并控制我恢复的内容?如果是这样,你能告诉我如何从转储文件中恢复 test1 吗?

谢谢。

最佳答案

使用--create-C 选项

pg_dump --create -s -U postgres -d test1 > test1_only.sql

Begin the output with a command to create the database itself and reconnect to the created database. (With a script of this form, it doesn't matter which database in the destination installation you connect to before running the script.) If --clean is also specified, the script drops and recreates the target database before reconnecting to it.

http://www.postgresql.org/docs/current/static/app-pgdump.html

关于postgresql - 如何让 pg_dump -s 包含 CREATE DATABASE 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24760286/

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