在我们的项目中,我们在数据库中创建了一长串临时模式。
我必须滚动浏览临时模式的整个列表,然后到达我正在处理的列表。 删除或删除架构不在我的控制之下。
我已经尝试了文档,它在“首选项”->“浏览器”->“显示”->“显示系统对象”中指出?开关设置为 True,客户端将在树形控件中显示系统对象,例如系统架构(例如 pg_temp)或系统列(例如 xmin 或 ctid)。
因此我将其标记为 False,但我仍然能够看到临时表的列表。
也刷新了连接。
还有其他方法可以隐藏相同的内容吗?还是我错过了什么?
当前版本,你可以看下
首选项 > 浏览器 > 显示 > 显示系统对象?
文档说:
什么时候显示系统对象?开关设置为 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())})()