postgresql 如何在PgAdmin 4中隐藏临时表

46qrfjad  于 2022-12-12  发布在  PostgreSQL
关注(0)|答案(1)|浏览(239)

在我们的项目中,我们在DB中创建了一个很长的临时模式列表。

我必须卷动整个“缓存”纲要清单,才能找到我正在使用的纲要。删除或移除纲要不在我的控制之下。
我已经尝试了documentation,其中它在Preference -〉Browser -〉Display -〉Show system objects?开关中声明设置为True,客户端将在树控件中显示系统对象,如系统模式(例如pg_temp)或系统列(例如xmin或ctid)。
因此,我将其标记为False,但仍然可以看到临时表的列表。

同时刷新了连接。
有没有其他方法可以隐藏相同的?或者我错过了什么?

ecfsfe2w

ecfsfe2w1#

在当前版本中,您可以在
首选项〉浏览器〉显示〉显示系统对象?
该文档说明:
当Show system objects?开关设置为True时,客户端将在树控件中显示系统对象,如系统架构(例如pg_temp)或系统列(例如xmin或ctid)。
但是,如果你只想隐藏临时模式,你可以把浏览器中的pgAdmin对象作为全局对象来使用。
我已经创建了一个黑客实现。随时尝试这个,但使用它在您自己的风险,我接受不承担任何责任,如果你丢失任何数据或代码。

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())})()

相关问题