【问题标题】:how to drop all databases except few ones in postgres如何删除除了postgres中的少数数据库之外的所有数据库
【发布时间】:2014-08-24 06:12:03
【问题描述】:

我想删除除少数数据库之外的所有数据库。 假设有 20 个数据库,我想删除其中的 18 个,但保留 2 个,因为它是最新的并且正在使用中。

请提出建议。

【问题讨论】:

  • "drop database databasename" 用于可删除的 18 个数据库..
  • 感谢您的快速回复!我想要一个脚本,我只想提及我想要保留的 2 个数据库名称。
  • @user3800715 ...当您尝试使用您选择的脚本语言自己编写此脚本时,您遇到了什么困难?
  • @CraigRinger 我不确定如何为此查询编写脚本。有人可以提供与 postgres 兼容的脚本吗?

标签: database postgresql


【解决方案1】:

首先,在 psql 终端中执行以下查询。

select 'drop database "'||datname||'";'
from pg_database
where datistemplate=false;

这将为所有数据库生成drop database 命令。在文本编辑器中复制结果并排除(删除)您要保留的内容并将其保存为dd.sql 文件。并像这样执行它:

psql -d postgres -f dd.sql

【讨论】:

  • 可选:psql -d postgres < <( psql -Atc "select 'drop database \"'||datname||'\";' from pg_database where datistemplate=false /* AND add_extra_conditions_here */;")
【解决方案2】:

您现在可以从 pgAdmin 中选择数据库的属性,选择要删除的 DB,然后单击删除/删除。快捷方便!删除选定的数据库:

【讨论】:

    【解决方案3】:

    正如公认的答案所表明的那样,删除多个数据库对我来说特别乏味,所以我写了一个帮助脚本来缓解这个操作:https://github.com/Kraymer/ezdropdb

    简而言之,您输入要抑制的数据库必须匹配的模式,然后列出所有数据库名称结果,并有一个最终提示,您可以在其中输入要删除的数据库(参见项目页面上的屏幕截图)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-15
      • 1970-01-01
      • 2012-05-22
      • 1970-01-01
      • 2013-06-10
      • 2013-01-10
      • 1970-01-01
      相关资源
      最近更新 更多