如何使用 SQL 查询删除 PostgreSQL 中的所有模式?

2024-04-04

我需要删除数据库中的所有架构,除了public, information_schema以及那些LIKE 'pg_%'.

这是我发现的:(这个变体似乎不起作用)

   CREATE OR REPLACE FUNCTION drop_all () 
   RETURNS VOID  AS
   $$
   DECLARE rec RECORD; 
   BEGIN
       -- Get all the schemas
        FOR rec IN
        SELECT DISTINCT schemaname
         FROM pg_catalog.pg_tables
         -- You can exclude the schema which you don't want to drop by adding another condition here
         WHERE schemaname NOT LIKE 'pg_%' AND schemaname != 'public' 
         AND schemaname != 'information_schema'
           LOOP
             EXECUTE 'DROP SCHEMA ' || rec.schemaname || ' CASCADE'; 
           END LOOP; 
           RETURN; 
   END;
   $$ LANGUAGE plpgsql;

   SELECT drop_all();

另一种变体:(这个probably有效,但仍然使我的应用程序崩溃)

SELECT string_agg(format('DROP SCHEMA %I CASCADE;', nspname), E'\n')
FROM   pg_namespace WHERE nspname != 'public'
AND nspname NOT LIKE 'pg_%'
AND nspname != 'information_schema';

因此,我想确保查询是正确的,或者希望找到查询的另一个变体。

有人可以帮我找到另一个查询来执行此操作吗?


它仅删除任何表的架构,因为您正在使用查询:

 SELECT DISTINCT schemaname
         FROM pg_catalog.pg_tables

因此没有任何表的模式不会被删除。

您必须使用不同的查询

SELECT n.nspname AS "Name",
  pg_catalog.pg_get_userbyid(n.nspowner) AS "Owner"
FROM pg_catalog.pg_namespace n
WHERE n.nspname !~ '^pg_' AND n.nspname <> 'information_schema'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 SQL 查询删除 PostgreSQL 中的所有模式? 的相关文章

  • Prisma 1 到 2 迁移问题:P4001 内省数据库为空

    因此 我一直在尝试在现有数据库上运行内省过程 如下所示 npx prisma introspect 并收到以下错误跟踪 0 info it worked if it ends with ok 1 verbose cli C Program
  • 如何在活动记录/Rails 4 迁移中创建具有唯一索引的新表

    如何通过 Rails 迁移创建新表并向其添加唯一索引 在文档中 我找到了如何在创建表后向表添加索引 但是如何在同一个迁移文件中同时执行这两项操作 创建表并添加唯一索引 这是完整的过程 生成迁移 rails generate migratio
  • 数据库镜像/Postgres流复制

    我不是 DBA 我是基于企业数据库的应用程序的主要开发人员 我目前正在指定一些新机器来升级我们现有的企业数据库 目前 我们在 DR 站点上运行带有数据库的 Postgres 8 4 该数据库通过前员工执行的一些自定义 rsync 工作定期接
  • Postgres 在转换时函数错误/失败时返回空值

    我正在尝试转换text价值观timestamp价值观 对于下表称为a id c1 1 03 03 2000 2 01 01 2000 3 12 4 1990 4 12 Sept 2011 5 12 1 1999 12 33 12 6 24
  • 在 postgres 中选择时保留顺序[重复]

    这个问题在这里已经有答案了 在 psql 中 至少在 v9 中 如果我这样做 select id from users where id in 2 1 1 and select id from users where id in 1 2 它
  • PostgreSQL 9.3 触发器函数插入带有参数化名称的表

    我正在尝试在 Postgres 中动态分区日志条目 我有 53 个子表 1 个代表每周的日志条目 并且希望使用触发器将 INSERT 路由到子表 我运行该函数INSERT INTO log5 VALUES NEW 并且它有效 我用以下命令运
  • 从两个不同的表中减去值

    考虑表X A 1 2 3 3 6 考虑表 Y A 0 4 2 1 9 如何编写一个查询来获取这两个表之间的差异 以计算下表 例如表 Z A 1 2 1 2 3 目前尚不清楚你想要什么 会是这个吗 SELECT SELECT SUM A FR
  • Postgres 在并发更新插入时出现死锁

    我们有一个从数据流中读取信息并将该信息更新到数据库中的应用程序 数据是 Google Drive 上发生的变化 这意味着影响相同对象的许多事件可能会非常接近地发生 将此信息更新插入数据库时 我们遇到了死锁 日志中显示的内容如下 我已经重建并
  • Rails 4/5 发送动态 ActionMailer::Base.mail 电子邮件,附件标记为 Noname

    我看过类似的帖子 主要涉及通过创建视图和控制器来发送附件 例如 电子邮件中的 PDF 附件称为 Noname https stackoverflow com questions 12816042 pdf attachment in emai
  • 尝试解码 JSON 日期时显示“JSON 写入中的类型无效 (__NSTaggedDate)”

    当我尝试从具有日期变量的数据库中解码 JSON 对象时 出现错误 由于未捕获的异常 NSInvalidArgumentException 而终止应用程序 原因 JSON 写入中的无效类型 NSTaggedDate 错误发生在以下代码行 le
  • WHERE BETWEEN 子句中的 PostgreSQL jsonb 值

    我的数据库表 a table 中有 jsonb 字段 其中包含 int 值 例如 abc def ghk 500 我将使用 WHERE 子句创建带有此字段 ghk 过滤器的 SELECT SELECT FROM a table WHERE
  • PostgreSQL 触发器不返回任何内容

    我在创建时有一个 PostgreSQL 触发器 它基本上将插入重定向到子表中 插入记录后 我想中止请求以避免重复数据 据我所知 执行此操作的唯一方法是返回NULL在触发器中 问题是我需要返回记录才能获取 ID 如果我回来NULL 我得到 N
  • PostgreSQL - 具有局部变量的函数 - 列引用不明确

    我查看了与我的主题相匹配的其他问题 但就我而言 我认为歧义来自于与列同名的变量 这是我尝试创建的函数的简化版本 CREATE OR REPLACE FUNCTION get user id username TEXT RETURNS INT
  • 按名称删除 jsonb 数组项

    我有下表 CREATE TABLE country id INTEGER NOT NULL PRIMARY KEY name VARCHAR 50 extra info JSONB INSERT INTO country id extra
  • 使用 gin 索引和 sqlalchemy 返回排名搜索结果

    我为全文搜索设置了 GIN 索引 我想获取与搜索查询匹配的记录列表 按排名排序 记录与搜索查询的匹配程度 对于结果 我只需要记录及其列 不需要用于排序的实际排名值 我有以下查询 它运行良好并从我的 postgresql 数据库返回预期结果
  • PostgreSQL 中的逆透视表

    我有下表作为 SUM Case End 的结果 Account Product A Product B Product C 101 1000 2000 3000 102 2000 1000 0 103 2000 1000 0 104 200
  • 如何使用flyway将数据从一个DB迁移到另一个DB?

    我在不同的服务器上有两个 postgreSql DB 比如说 A 和 B 我可以使用 Flyway 一些如何将所有数据从 DB A 复制到新设置且为空的 B 如果有人指出我正确的方向和工具 这将很有帮助 要求是通过某种工具自动化将数据从一个
  • 用户非超级管理员和大对象的 pg_dump

    我与非超级管理员的用户开始了导出数据库的长期职业生涯 但我发现了一个问题 在新版本的postgresql中只有超级管理员才能访问大对象 ERROR permission denied for large object 5141 没有办法做到
  • 从 postgres 表中提取 json 数组给出错误:无法从标量中提取元素

    通过使用jsonb array elements 提取出来的函数jsonb来自 Postgres 的数据数组 它给出了错误 无法从标量中提取元素 我认为这是因为NULL在返回调用中 添加了NULL检查状况但不工作 任何帮助表示赞赏 sele
  • 如何在一列中存储数组或多个值

    运行 Postgres 7 4 是的 我们正在升级 我需要将 1 到 100 个选定项目存储到数据库的一个字段中 98 的情况下 只会输入 1 个项目 而 2 的情况下 如果是这样的话 会输入多个项目 这些项目只不过是文本描述 截至目前 长

随机推荐

  • Angularjs:滚动到div底部

    我无法滚动到最后一条消息 var app angular module myApp ngMaterial app controller ChatCtrl function window anchorScroll var self this
  • 如何解决错误:SOAP-ERROR:编码:对象没有“createLead”属性?

    我编写了一个应该连接到安全 Web 服务 ws security 的脚本 但是 运行脚本时 我收到此错误 Error SOAP ERROR Encoding object has no createLead property 我正在使用这段
  • 如何让“font-weight: lighter”在 Google Chrome 中正常工作?

    在 Google Chrome 可能还有 Safari 中 font weight normal 和 font weight bold 之间似乎没有任何区别 有没有人找到一种方法可以像 Firefox 那样在 Chrome 中调用 font
  • 为什么在 URL 中使用感叹号? [复制]

    这个问题在这里已经有答案了 可能的重复 Facebook 和新 Twitter URL 中的 shebang 有何用途 https stackoverflow com questions 3009380 whats the shebang
  • Cocoa contentOfDirectoryAtPath:某些用户的方法失败并出现错误 - Mac OS X

    这是代码片段 Get into the data folder of it keychainPath keychainPath stringByAppendingPathComponent data default DLog Keychai
  • 注意:未定义的索引[重复]

    这个问题在这里已经有答案了 我有一个复选框可以保护帖子密码 p strong strong p
  • Symfony2 自定义表单错误消息

    你能帮我了解如何使用 Symfony2 自定义表单中的错误消息吗 我想更改 HTML 布局 添加 div 类等 阅读指南 它给出了一段代码 可以放入一个名为的文件中fields errors html twig但它没有告诉将该文件放在哪里以
  • 在 c 函数内分配数组

    我正在尝试在函数内分配和初始化数组 但返回后似乎无法获取值 这是我最后一次几乎可行的尝试 include
  • 如何在 CodeIgniter 中计算具有特定年份日期的行数?

    我有以下查询 query this gt db gt query SELECT COUNT FROM iplog persons WHERE begin date LIKE 2014 我需要计算 2014 年 begin date 的列数
  • 如何在 OpenAPI 3.0 中全局设置 Accept header?

    我通过 SwaggerHub 设置了新的 OpenAPI 是否有一个选项可以强制执行某些操作Accept全局标题 我已经设置了Content Type关于回应 openapi 3 0 0 paths test path get respon
  • AirPlay 的音频输出路由

    我已经查看过 但找不到访问音频输出路由的方法 因此我可以检测音频是否通过 AirPlay 输出 这是我在 iOS 5 0 文档中找到的 kAudioSessionOutputRoute AirPlay 讨论 这些字符串用作与 kAudioS
  • 从 varchar 字段中仅选择单词的首字母

    我在一次采访中被问到 一个来自oracle sql的问题 这似乎是一个简单的问题 但我不知道如何回答 有人可以帮忙吗 如果某列中有 纽约是一座美丽的城市 这样的字符串 select column name from table name 将
  • 绝对定位的弹性盒不会扩展以适应内容[重复]

    这个问题在这里已经有答案了 正如您从下面的代码片段中看到的 查看小提琴 http jsfiddle net tekm28wy 绝对定位的柱状弹性盒不会扩展以适合其子级 例如 在 Chrome 中 它的宽度仅与最宽的子元素一样宽 高度与最短的
  • 为什么使用公共变量?

    变量 方法和类可以获得不同的安全级别 根据我的 C 经验 有 public内部的受保护的受保护的内部私人的 现在 我了解了将方法和类设为私有 内部或受保护的用途 但是变量呢 即使我将变量设置为私有 我也可以使用属性从不同的类中调用它 我一直
  • 计算变化率

    我有一个名为 yield 的数据集 yield lt data frame fruits c apples apples apples oranges oranges oranges pears pears pears year rep 2
  • xslt需要选择单引号

    我需要这样做
  • YouTube API 配额限制和可扩展的应用程序

    我目前正在开发一个需要通过 youtube 上传视频的应用程序 我计划通过 youtube API 在应用程序中分享视频 根据文档 在 YouTube 上分享视频需要 大约 16000 个单位 每个应用程序都有 500 万个单位的补充配额
  • C++ VS2013 调试器断点:未命中

    我有一个相对简单的 C 控制台项目 它执行一些计算并写入输出文件 我试图确定为什么输出文件没有正确的输出 相反 我一直在与调试器作斗争 由于某种原因我无法添加断点在某个函数的某一行之后 无法到达第 1106 行之后到第 1214 行 函数末
  • 获取模拟用户名

    我有一个类需要知道当前有效的用户名 Environment UserName or WindowsIdentity GetCurrent Name是为了那个 但是当启用模拟时 它们会返回LocalUser名称不是ImpersonatedUs
  • 如何使用 SQL 查询删除 PostgreSQL 中的所有模式?

    我需要删除数据库中的所有架构 除了public information schema以及那些LIKE pg 这是我发现的 这个变体似乎不起作用 CREATE OR REPLACE FUNCTION drop all RETURNS VOID