【问题标题】:Postgresql stored procedures transferringPostgresql 存储过程传输
【发布时间】:2014-03-07 07:12:20
【问题描述】:

有没有办法在创建数据库脚本时从第一个数据库中获取所有存储过程并将其传输到第二个数据库? (不使用 pgAdmin 或类似的东西)

【问题讨论】:

  • 可以使用 pg_dump--section=post-data --schema-only 选项。

标签: database postgresql stored-procedures transfer


【解决方案1】:

如果您真的只对函数感兴趣,您可以查询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 的一个版本更改为另一个版本。此外,它认为由扩展创建的函数就好像它们不是一样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-15
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多