从现有表中过滤 SQL DDL 语句的列名称

2023-12-13

是否可以在 psql 中过滤列名本身?我想在一个单独的模式(伪代码)中生成原始表的有限版本(具有数百列):

create table why.am_i_doing_this
    select *
    from original.table 
    where column_name_of_the_table not in ('column_1', 'column_2' );

动态构建 DDL 命令。您可以分两步完成:

  1. 构建语句:

    SELECT 'CREATE TABLE why.am_i_doing_this AS SELECT '
        || string_agg(column_name, ', ' ORDER BY ordinal_position)
        || ' FROM original.table'
    FROM   information_schema.columns
    WHERE  table_schema = 'original'
    AND    table_name = 'table'
    AND    column_name NOT IN ('column_1', 'column_2');
    
  2. (检查它是否正常!)然后在到服务器的第二次往返中执行生成的语句。

这是基于信息模式视图information_schema.columns。或者,您可以使用pg_catalog.pg_attribute。有关的:

  • 如何检查给定模式中是否存在表

但它也可以在到服务器的单次往返中完成:

With a DO任何客户的声明

DO只是一个简单的包装器,用于临时执行 PL/pgSQL 代码。您可以在函数或过程中执行相同的操作。

DO
$$
BEGIN
   EXECUTE (
   SELECT 'CREATE TABLE why.am_i_doing_this AS SELECT '
       || string_agg(column_name, ', ' ORDER BY ordinal_position)
       || ' FROM original.table'
   FROM   information_schema.columns
   WHERE  table_schema = 'original'
   AND    table_name = 'table'
   AND    column_name NOT IN ('column_1', 'column_2')
   );
END
$$;

使用 psql 元命令更简单\gexec

既然你提到了默认交互终端psql。在那里你可以使用\gexec. It ...

将当前查询缓冲区发送到服务器,然后将查询输出(如果有)的每行的每一列视为要执行的 SQL 语句。

So:

SELECT 'CREATE TABLE why.am_i_doing_this AS SELECT '
    || string_agg(column_name, ', ' ORDER BY ordinal_position)
    || ' FROM original.table'
FROM   information_schema.columns
WHERE  table_schema = 'original'
AND    table_name = 'table'
AND    column_name NOT IN ('column_1', 'column_2')\gexec
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从现有表中过滤 SQL DDL 语句的列名称 的相关文章

  • rspec 返回“PG::Error: ERROR: 关系“table_name”不存在”

    rvm rspec 2 8 0 rails 3 0 6 和 pg 0 13 2 上的环境为 REE 2011 12 在 CentOS 5 6 上使用 PostgreSQL 8 3 17 db migrate 可以正常工作 但 rspec 出
  • pgadmin:收到“详细信息:用户没有 CONNECT 权限。”错误

    我在 Mac Yosemite 上使用 pgAdmin III 我创建了一个角色 discount 和一个数据库 discount 在 pgadmin 工具中 如何授予用户 discount 对数据库 discount 的连接权限 以及表读
  • 大型数据集的报告工具/查看器

    我有一个数据处理系统 可以根据其处理的数据生成非常大的报告 我所说的 大 是指该系统的 小 执行在转储到 CSV 文件中时会产生大约 30 MB 的报告数据 而大数据集大约为 130 150 MB 我确信有人有更大的想法 大 但这不是重点
  • 执行计划中是否考虑了功能?

    当查询在 SELECT 或 WHERE 子句中包含 PL SQL 函数 用户定义函数 时 如何生成执行计划 它是否也计算这些函数的成本并将其显示在执行计划中 或者这些函数只是被忽略 在此先感谢您的帮助 用户生成的函数在 SELECT 或 W
  • 选择语句REF oracle

    我需要一些帮助来创建将使用引用的选择语句 我设法很好地插入了值 但是当我尝试使用 where 语句提取值时 输出要么是数据类型错误 要么会输出两个表以及它们都包含的数据 这只是一个例子 Create or replace table1 Ty
  • 与 Postgres 的 TCP 连接安全吗?需要 SSL 吗?

    早上好 我正在浏览 Postgresql 配置文件 最近注意到有一个ssl选项 我想知道什么时候需要这样做 假设您有一个应用程序服务器和一个数据库服务器 不在专用网络内运行 如果用户尝试登录 如果未启用 SSL 应用程序服务器在查找用户密码
  • Oracle 函数编译成功,但在执行 PLS-00221 时抛出错误:不是过程或未定义

    我有简单的oracle功能 create or replace function abs test func test in in number return number is test out number BEGIN test out
  • Psycopg2 中的元命令 - \d 不起作用

    我希望使用列出表的所有列名psycopg2Python 包 2 7 但我无法执行以下查询 cur execute d my table psycopg2 ProgrammingError syntax error at or near 对于
  • 基准测试:PostgreSQL 上的 bigint 与 int

    我想提高数据库性能 在一个项目中 所有表都来自int to bigint 我认为这不仅在存储方面是一个糟糕的选择 因为int需要4 bytes and bigint需要8 bytes 但也与性能有关 所以我创建了一个小表1000万条目 其中
  • 从 Visual Studio 调试 SQL Server 2005 中的存储过程?

    我在这里和其他地方看到很多令人沮丧的问题 但没有明确的答案 我试图让存储过程进行调试 但没有成功 客户端 VS2005或VS2008 两者都不起作用 当我从存储过程上下文菜单中选择 步入存储过程 时 我在调试窗口中看到 已被用户取消 这就是
  • Brew Postgresql 启动但进程未运行

    我在 Mac 上通过 Brew 安装了 Postgres 然后 我尝试启动它 gt brew services restart postgres Stopping postgresql might take a while gt Succe
  • 对 SQL Server 2005 结果进行分页

    如何在 SQL Server 2005 中对结果进行分页 我在 SQL Server 2000 中尝试过 但没有可靠的方法来做到这一点 我现在想知道SQL Server 2005是否有任何内置方法 分页的意思是 例如 如果我按用户名列出用户
  • SQL限制数据库中的最小值和最大值

    CREATE TABLE TBL CD CDnr int identity 1 1 CDTitel nvarchar 80 NOT NULL CDduur int CDprijs smallmoney 所以我正在创建这个表 有什么方法可以将
  • 如何在 SQL 中编写 where 子句来按一天中的时间过滤 DATETIME 列?

    我有带有 DATETIME 列时间戳的数据 我想将其过滤到 DATETIME 介于上午 9 30 到下午 5 30 之间的任意一天的记录集 最好的方法是什么 更新 更改是因为我需要精确到分钟 而不仅仅是小时 对于那个很抱歉 您始终可以将其编
  • 在带有循环引用的表中插入 SQL

    我有 2 张桌子 Empleados numEmpl nombre apellido sexo telefono salario numDept Departamentos numDept nombreDept numDirect 在部门中
  • 对时间序列数据重新采样

    我有一个以毫秒为单位的时间序列列表 我想对时间序列进行重新采样并对组应用平均值 我如何在 Postgres 中实现它 重新采样 是指聚合一秒或一分钟内的所有时间戳 一秒或一分钟内的所有行形成一组 表结构 date x y z Use dat
  • 简单的t-sql而不是触发器

    任何人都可以帮助解决简单的 t sql 脚本与板载触发器的问题吗 我使用非常简单的触发器将数据从一个表复制到另一个表 这些表之间没有关系 当我尝试在触发器创建后 从同一脚本 直接第一次插入数据时 我得到了所需的结果 但所有接下来的尝试都会失
  • 左连接 SQL 求和

    我有两张桌子想要加入 比如说表 a 和表 b 表 b 有许多行指向表 a 表 b 包含价格 实际上是一个购物篮 所以我想要的是表a中的所有记录和表b中的价格之和 我努力了 select a sum b ach sell from booki
  • 更新查询时 ios 中出现“数据库锁定”错误

    我正在使用下面的代码更新查询 using sqlite 但我越来越 database is locked error 我尝试搜索一些 SO 链接 建议关闭数据库 但我再次执行此操作时遇到相同的错误 我已经提到过代码中出现错误的地方 cons
  • 我的数据库有错误

    创建表时如下 create table Ticket ticket id integer not null primary key AirlineName varchar not null CustomerName varchar from

随机推荐

  • 我的第一个计算器需要帮助

    所以我刚刚开始学习编码 已经学习了大约 1 周 我想尝试制作一个可以执行 和 的计算器 但无法弄清楚如何让用户选择他想要使用的内容 有没有人可以帮助我 这是代码 int x int y Console WriteLine Welcome t
  • C++ 中的令牌及其使用方式

    在 Bjarne Stroustrup 的 使用 C 编程原理与实践 一书中 他解释了如何使用标记来阻止 C 自动使用简单计算器上的运算顺序 他在书中给出的代码不起作用 要么是因为我的愚蠢 要么是因为我遗漏了一些东西 我知道令牌本质上是将代
  • 如何知道 jQuery 选项卡上的选项卡是否已启用?

    我在 jQuery UI Tabs 的 API 中找不到 http docs jquery com UI Tabs 一种知道是否启用某个选项卡的方法 我需要它 因为在我的应用程序的事件中 我只想在禁用某个选项卡时才启用该选项卡 你知道如何从
  • 声明 JavaScript 数组时“{}”和“[]”有什么区别?

    声明 JavaScript 数组时 和 有什么区别 通常我声明像 var a 将数组声明为的含义是什么var a 似乎没有人解释数组和对象之间的区别 正在声明一个数组 正在声明一个对象 数组具有对象的所有功能以及附加功能 您可以将数组视为对
  • 使用不同的列/线宽度绘制热图

    我正在模拟一些东西 想找出两个参数的影响 因此 我改变它们 并查找每对参数值的结果 并得到如下结果 0 1000 2000 3000 4000 5000 0 13 2 14 8 19 9 25 5 27 3 1000 21 3 25 9 3
  • 什么时候我们需要多个Dispatcher Servlet?

    哪些场景下我们需要多个Dispatcher Servlets 谁能告诉我的用例multiple Dispatcher Servlets 我认为每个用例都可以通过使用来解决single Dispatcher Servlet 来自文档 Web
  • 由于错误,无法使用特定项目的 gh-pages 进行部署:无法生成 sh:没有这样的文件或目录

    继续报错 错误 无法生成 sh 没有这样的文件或目录 致命 无法分叉 该项目构建正确 但在尝试部署我的网站时失败 网站是在我的 Windows 8 电脑上使用 create react app 使用命令 gh pages d build 创
  • 如何使用图标呈现数据绑定的 WinForms DataGridView 列?

    在我的 C Windows 窗体应用程序中 我有一个DataGridView绑定到一个BindingList
  • 分页链接中重复参数的问题?

    问题是 当我加载第 2 页时 URL 变为 这很好 但是当我翻到第 3 页时 它变成了 依此类推 每次从分页链接加载新页面时 它都会添加一个当前页面参数 我想知道这个问题如何解决 这是分页功能的一些代码 build the paginati
  • 如何在 Rails 6 中使用自定义 jQuery

    我已经思考这个问题好几天了 由于某种原因 我的语义用户界面 jQuery 无法工作 这就是我所做的 在我的 webpack environment js 上 const environment require rails webpacker
  • gridview中的Oracle数据库表

    我想从 Oracle 数据库中的查询中获取结果并将其放入网格视图中 现在我的问题是 我不知道如何在网格视图中输出它 我正在使用工具箱中的 gridview 并且我的 Oracle 连接正常 我也有权利SELECT查询 我可以将其输出到列表框
  • Java 每 0.5 秒在动画中移动 jlabel

    我想要简单的动画每 0 5 秒设置一次位置 但它不会仅在循环结束时设置位置动画 int x 1 整数y 1 while x lt 100 jLabel1 setLocation x y x x 10 y y 10 try Thread sl
  • Flink广播状态如何初始化?

    我们正在尝试构建一个用例 其中来自流的数据通过计算公式运行 但公式本身也应该 很少 可更新 通过阅读文档 在我看来 Flink 广播状态非常适合这种情况 作为实验 我构建了一个简化版本 假设我有一个整数流 以及第二个包含这些整数的乘法因子的
  • 如何将UNC转换为本地路径

    我正在寻找一种方法来获取给定 UNC 路径的相应本地路径 微软提供了一个小型库CheckLCL以此目的 并非所有 Windows 版本都支持此库 有人知道这方面的开源方法吗 还有MAPI功能来自UNC的ScLocalPath 但不确定它是否
  • 如果经过身份验证,则允许下载文件

    我在 htaccess 文件中有一个 RewriteRule RewriteRule folder folder handle php path 1 L 用于验证用户身份handle php归档并查看他们是否拥有高级帐户 我想要 1 检查用
  • 为什么 NSString 和 NSLog 处理 %C 和 %lc(以及 %S 和 %ls)的方式不同?

    Apple s 字符串格式说明符文件索赔 NSString 格式化方法和 CFString 格式化函数支持的格式说明符遵循IEEE printf 规范 您还可以将这些格式说明符与 NSLog 函数一起使用 但是 虽然printf规范定义 C
  • 更新推送证书并保持当前 App Store 应用程序正常运行

    我在应用程序商店中有一个应用程序 它使用的 iOS 配置文件 分发 已过期 此配置文件包含也已过期的推送证书 并且不再出现在门户中 问题1 有没有办法重新创建推送证书然后更新配置文件 我的钥匙串上仍然有推送证书 已过期 问题2 我是否需要使
  • 如何用 python 检测 firebase child 的变化?

    我在使用这个应用程序时遇到了一些问题 我需要的是 如果我检测到数据库 FIREBASE 中的更改 特别是 sala 和 ventilacion 节点中的更改 该函数就会执行它必须执行的操作 如果数据库中没有任何更改 它不会执行任何操作 我正
  • git 复制特定版本的存储库

    我是 git 新手 所以如果这是一个愚蠢的问题 请原谅我 我有一个 git 存储库 我需要将存储库的特定修订版复制到其自己的单独目录中 复制的版本本身不需要是 git 存储库 我不需要或想要历史记录或 git 文件夹 只是特定提交的存储库的
  • 从现有表中过滤 SQL DDL 语句的列名称

    是否可以在 psql 中过滤列名本身 我想在一个单独的模式 伪代码 中生成原始表的有限版本 具有数百列 create table why am i doing this select from original table where co