gpt4 book ai didi

postgresql - 如何在导出中排除 PL/pgSQL 函数?

转载 作者:行者123 更新时间:2023-11-29 12:28:39 32 4
gpt4 key购买 nike

我使用以下命令从服务器的数据库中转储一些结构,以便能够在我的本地硬盘驱动器上创建数据样本。

pg_dump -h myserver.com -U product_user -s -f ./data/base.structure.postgresql.sql -F p -v -T public.* -T first_product.* -T second_product.* -T another_product.locales mydatabase

我需要排除一些模式,否则它会因权限或其他错误而结束。即使我排除了 public 模式,它也会转储该模式中的所有函数,如下所示:

REVOKE ALL ON FUNCTION gin_extract_trgm(text, internal) FROM PUBLIC;
psql:./data/base.structure.postgresql.sql:8482: ERROR: function gin_extract_trgm(text, internal) does not exist

我知道这来自 PostgreSQL 中的全文或相似性插件,但我不使用它,也不需要在我的机器上使用它,所以我想排除这些功能。

我该怎么做?

最佳答案

有一种方法可以做到。假设您的备份名为 backup.dump。你需要做的是:

$ pg_restore -l -f out.txt backup.dump

这将创建一个文件 out.txt,其中包含转储中的对象列表。您需要编辑该文件并删除您不想恢复的项目。然后你这样做:

$ pg_restore -L out.txt -h your.host.name -U username ....  backup.dump

这将使用文件 out.txt(您编辑的)来选择要恢复的内容。非常方便,尤其是在转储很大并且您无法重新转储数据库的情况下。

关于postgresql - 如何在导出中排除 PL/pgSQL 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9715434/

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