Postgresql -如何一次性为所有对象生成脚本沿着依赖关系

rdlzhqv9  于 2023-08-04  发布在  PostgreSQL
关注(0)|答案(1)|浏览(131)

在PostgreSQL中,如何生成所有对象的脚本沿着依赖项。需要该脚本来创建所有维护了依赖关系的对象。
已尝试使用备份,但不起作用。
我希望普通脚本删除和创建表,视图,程序,函数沿着依赖关系。

u7up0aaq

u7up0aaq1#

SQL对象之间的大多数依赖关系都是隐式的,您无法轻松导出它们(您需要对pg_depend目录表进行自定义查询)。我的意思是依赖关系,比如:

  • VIEW依赖于使用的表和列
  • 表依赖于模式
  • 表列取决于数据类型
  • 基于表达式的索引取决于表达式中使用的函数
  • 等等等等。

幸运的是,您不需要它,因为这种类型的依赖项由本机实用程序pg_dump自动解析。
您可以使用pg_dump生成一个脚本,该脚本将以正确的顺序恢复所有对象,并保持依赖关系。
举例来说:

# backup in the fastest `dir` format:
pg_dump "host=srv dbname=myapp user=admin" -Fd -j5 -v -f myapp.bak

# convert to text:
pg_restore myapp.bak -f myapp-restore.sql

# restore to empty db in some other server:
psql "host=newsrv dbname=myapp user=admin" -f myapp-restore.sql -e |& tee myapp-restore.log

字符串

相关问题