如何在 PgAdmin 4 中隐藏临时表

问题描述 投票:0回答:1

在我们的项目中,我们在数据库中创建了一长串临时模式。

enter image description here

我必须滚动浏览临时模式的整个列表,然后到达我正在处理的列表。 删除或删除架构不在我的控制之下。

我已经尝试了文档,它在“首选项”->“浏览器”->“显示”->“显示系统对象”中指出?开关设置为 True,客户端将在树形控件中显示系统对象,例如系统架构(例如 pg_temp)或系统列(例如 xmin 或 ctid)。

因此我将其标记为 False,但我仍然能够看到临时表的列表。

enter image description here

也刷新了连接。

还有其他方法可以隐藏相同的内容吗?还是我错过了什么?

database postgresql pgadmin-4
1个回答
0
投票

当前版本,你可以看下

首选项 > 浏览器 > 显示 > 显示系统对象?

文档说:

什么时候显示系统对象?开关设置为 True,客户端将 显示系统对象,例如系统架构(例如 pg_temp) 或树控件中的系统列(例如 xmin 或 ctid)。

所以这会隐藏它们。但是,如果您只想隐藏临时模式而不隐藏其他内容,则可能会弄乱在浏览器中作为全局对象提供的公开的

pgAdmin
对象。

我创建了一个 hack 实现。请随意尝试此操作,但使用它的风险由您自行承担,如果您丢失任何数据或代码,我不承担任何责任。

schemaQuery = window.prompt('Type a string to remove schemas containing this substring:')
function closetemp(ns){
    ns.forEach(n=>{
    if(n._metadata.data._type == 'coll-schema'){
      n._children.forEach(s=>{
        if(s._fileName.indexOf(schemaQuery)!=-1){
          pgAdmin.Browser.tree.remove(s)
        }
      })
    }
    if(n._children!=null){
        closetemp(n._children)
    }
  })
}
closetemp(pgAdmin.Browser.tree.children())

在浏览器控制台中运行它,会弹出一个框。输入“_temp_”,它将从浏览器树中删除包含字符串“_temp_”的每个架构。

它爬行树,找到模式,并从树中删除节点。它可能会导致我不知道的错误,但如果您从菜单刷新树,临时模式(或任何与您的字符串匹配的模式)将再次出现。

您可以创建一个书签并保存它,这样您就不必打开浏览器控制台。如果您将其保存为书签并将其设置为 URL,那么当您单击它时,它将删除临时表:

javascript:(()=>{function%20closetemp(ns)%7B%0A%09ns.forEach(n%3D%3E%7B%0A%20%20%20%20if(n._metadata.data._type%20%3D%3D%20'coll-schema')%7B%0A%20%20%20%20%20%20n._children.forEach(s%3D%3E%7B%0A%20%20%20%20%20%20%20%20if(s._fileName.indexOf('_temp_')!%3D-1)%7B%0A%20%20%20%20%20%20%20%20%20%20pgAdmin.Browser.tree.remove(s)%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D)%0A%20%20%20%20%7D%0A%20%20%20%20if(n._children!%3Dnull)%7B%0A%20%20%20%20%09closetemp(n._children)%0A%20%20%20%20%7D%0A%20%20%7D)%0A%7D%0Aclosetemp(pgAdmin.Browser.tree.children())})()

© www.soinside.com 2019 - 2024. All rights reserved.