相关疑难解决方法(0)

PostgreSQL:如何列出访问特定表的所有存储函数

介绍:

PostgreSQL 数据库,包含数百个存储函数,包括过时的、未使用的等。

问题

我需要找出与表 X 有任何关系的所有存储函数 - 因为我想更改表结构。其中一些可能没有使用,所以我不能通过查看代码来做到这一点。

我有 ATM 的解决方案是运行 psql\df+和 grepping 输出,但我更喜欢更像数据库的解决方案,即通过使用信息模式。这肯定是一项重复性的任务,我希望它干净整洁。

有什么建议?

postgresql information-schema

18
推荐指数
2
解决办法
3万
查看次数

如何删除我在 PostgreSQL 中的所有函数?

现在我必须使用查询来获取文本文件中的命令。然后从中删除双引号。最后,在 psql shell 中运行该文件。

如何一步删除 PostgreSQL中的所有函数?

postgresql dynamic-sql functions

9
推荐指数
2
解决办法
1万
查看次数

Postgres - 仅尝试备份函数

我正在尝试按照 Craig Ringer 对这个问题的回答:https :
//stackoverflow.com/questions/13758003/how-to-take-backup-of-functions-only-in-postgres

我的命令是:

psql -U username -AT db_name -c "
    SELECT pg_get_functiondef(f.oid) 
    FROM pg_catalog.pg_proc f 
    INNER JOIN pg_catalog.pg_namespace n ON (f.pronamespace = n.oid) 
    WHERE n.nspname = 'public'
" > /dump/file/functions.sql
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误:

Error: "st_extent" is an aggregate function
Run Code Online (Sandbox Code Playgroud)

为什么它不喜欢聚合函数?我该怎么做才能解决这个问题?

postgresql backup aggregate functions

5
推荐指数
1
解决办法
2633
查看次数

PostgreSQL 12:列 proisagg 不存在

我在这里使用以下图像(即 9.3-2.1、11.0-2.5 和 12.0 标签)创建了一个 PostGIS 数据库,但是当我尝试打开“公共”模式时出现以下错误:

在此处输入图片说明

在此处输入图片说明

An error has occurred:

11:43:59: Error: ERROR:  column "proisagg" does not exist
LINE 9:  WHERE proisagg = FALSE AND pronamespace = 2200::oid
HINT:  Perhaps you meant to reference the column "pr.prolang".
Run Code Online (Sandbox Code Playgroud)
An error has occurred:

11:46:24: Error: ERROR:  column rel.relhasoids does not exist
LINE 1: ...t_userbyid(rel.relowner) AS relowner, rel.relacl, rel.relhas...
Run Code Online (Sandbox Code Playgroud)

我在这里这里找到了可能的解决方案。我试图询问我应该如何更新查询,但我需要至少 50 个声望才能发表评论。

有谁知道我应该如何解决这个问题?或者我应该如何更改 pgAdmin 上查询的定义?

提前致谢。

系统:

  • PostgreSQL 12.0 (Ubuntu 12.0-2.pgdg16.04+1)
  • pgAdmin III
  • Ubuntu 16.04 LTS

postgresql pgadmin pgadmin-3

5
推荐指数
1
解决办法
8468
查看次数