基本上,我正在尝试制作一个 SQL 转储,它将制作数据库的精确副本:用户定义的函数、关系、约束、表、数据等。
这是可行的pg_dump
还是psql
需要使用?
我一直在使用pg_dump -U user -cOx database > pg.sql
,但我并不完全清楚它是否捕获了所有内容。
我在pg_dump
这里查看了所有的标志:
https://www.postgresql.org/docs/11/app-pgdump.html
我能想到的唯一一个可能会这样做,因为它并没有真正明确地说明,是-s --schema-only
标志,它不包括数据。我对此很好,并pg_dump
为数据运行了第二个,但我主要想确保我正在备份用户定义的函数、关系等。
我不是 PostgreSQL 专家,但我认为他们的文档很清楚,我相信您使用的命令几乎就是您所需要的(您可能需要使用标志指定密码 - 不确定),除非您确实想要分两步使用
--schema-only
,然后使用--data-only
:本教程
pg_dump
也pg_dumpall
应该可以帮助您前进。最后,您可以做的最好的事情是在脚本生成后在测试数据库中运行脚本,并抽查您希望创建的不同内容(表、视图、主键、外键、其他约束等) ) 在您对其来源的原始数据库进行任何重大更改之前。