【发布时间】:2014-03-07 07:12:20
【问题描述】:
有没有办法在创建数据库脚本时从第一个数据库中获取所有存储过程并将其传输到第二个数据库? (不使用 pgAdmin 或类似的东西)
【问题讨论】:
-
可以使用
pg_dump和--section=post-data --schema-only选项。
标签: database postgresql stored-procedures transfer
有没有办法在创建数据库脚本时从第一个数据库中获取所有存储过程并将其传输到第二个数据库? (不使用 pgAdmin 或类似的东西)
【问题讨论】:
pg_dump 和 --section=post-data --schema-only 选项。
标签: database postgresql stored-procedures transfer
如果您真的只对函数感兴趣,您可以查询pg_proc 目录并获取给定架构的CREATE FUNCTION 语句(比如说public):
$ psql -AXtqc "SELECT pg_get_functiondef(oid)||';' FROM pg_proc p WHERE p.pronamespace = (SELECT oid FROM pg_namespace WHERE nspname = 'public')" your_first_database
如果你真的只想要一步:
$ psql -AXtqc "SELECT pg_get_functiondef(oid)||';' FROM pg_proc p WHERE p.pronamespace = (SELECT oid FROM pg_namespace WHERE nspname = 'public')" your_first_database | psql your_second_database
这适用于一次性任务,但不适用于明确的脚本,因为查询可能会从 PostgreSQL 的一个版本更改为另一个版本。此外,它认为由扩展创建的函数就好像它们不是一样。
【讨论】: