PostgreSQL 查询数据表、视图信息
--获得指定schema范围内的所有表和视图的列表,可指定一个排除表前缀模式
with param as (select 'public,iit' as schema_name,'db2g%' as exclude_pattern),base_info as (--获得所有基表select pg_namespace.nspname as schema_name, a.relname as tbl_name ,'TBL' as tbl_type, b.description as tbl_commentfrom pg_class ajoin pg_namespace on a.relnamespace=pg_namespace.oidleft join (select * from pg_description where objsubid =0 ) bon a.oid = b.objoidwhere a.relkind='r'and a.relname not like (select exclude_pattern from param)and pg_namespace.nspname in (select regexp_split_to_table(schema_name,',') from param)union all---获取所有视图SELECT schemaname as schema_name, viewname as tbl_name,'VW' as tbl_type, null as tbl_commentFROM pg_viewsWHERE schemaname in (select regexp_split_to_table(schema_name,',') from param)) select * from base_info;
--获得指定schema范围内的所有表和视图的数据列信息,可指定一个排除表前缀模式
with param as (select 'public,iit' as schema_name,'db2g%' as exclude_pattern),base_info as (select table_schema, table_name, ordinal_position as Colorder, column_name as ColumnName, data_type as TypeName, coalesce(character_maximum_length, numeric_precision, -1) as Length, numeric_scale as Scale, case is_nullable when 'NO' then 0 else 1 end as CanNull, column_default as DefaultVal, case when position('nextval' in column_default) > 0 then 1 else 0 end as IsIdentity, case when b.pk_name is null then 0 else 1 end as IsPK, c.DeTextfrom information_schema.columnsleft join (select pg_attr.attname as colname,pg_constraint.conname as pk_name,pg_class.relname as tblname,pg_namespace.nspname as schema_namefrom pg_constraintjoin pg_class on pg_constraint.conrelid = pg_class.oidjoin pg_attribute pg_attr on pg_attr.attrelid = pg_class.oidand pg_attr.attnum = pg_constraint.conkey[1]join pg_type on pg_type.oid = pg_attr.atttypidjoin pg_namespace on pg_constraint.connamespace=pg_namespace.oidwhere pg_constraint.contype = 'p') b on b.colname = information_schema.columns.column_nameand b.tblname=information_schema.columns.table_nameand b.schema_name=information_schema.columns.table_schemaleft join (select attname, description as DeText, pg_class.relname as tblname,pg_namespace.nspname as schema_namefrom pg_classjoin pg_namespace on pg_class.relnamespace=pg_namespace.oidleft join pg_attribute pg_attr on pg_attr.attrelid = pg_class.oidleft join pg_description pg_desc on pg_desc.objoid = pg_attr.attrelidand pg_desc.objsubid = pg_attr.attnumwhere pg_attr.attnum > 0and pg_attr.attrelid = pg_class.oid) c on c.attname = information_schema.columns.column_nameand c.tblname=information_schema.columns.table_nameand c.schema_name=information_schema.columns.table_schemawhere table_schema in (select regexp_split_to_table(schema_name,',') from param)and table_name not like (select exclude_pattern from param)order by table_name,ordinal_position)
select * from base_info;
--查询指定模式下的表和视图with param as (select 'public' as schema_name,'db2g%' as exclude_pattern) --获得所有基表 select a.relname as tbl_name ,'TBL' as tbl_type, b.description as tbl_comment from pg_class aleft join (select *from pg_description where objsubid =0 ) bon a.oid = b.objoid where a.relname in (select tablenamefrom pg_tableswhere schemaname = (select schema_name from param))and a.relname not like (select exclude_pattern from param) union all ---获取所有视图 SELECT viewname as tbl_name,'VW' as tbl_type, null as tbl_comment FROM pg_views WHERE schemaname =(select schema_name from param) order by tbl_name asc;
--查询指定数据基表的列信息
with param as (select 'emp' as tblname),base_info as (select ordinal_position as Colorder, column_name as ColumnName, data_type as TypeName, coalesce(character_maximum_length, numeric_precision, -1) as Length, numeric_scale as Scale, case is_nullable when 'NO' then 0 else 1 end as CanNull, column_default as DefaultVal, case when position('nextval' in column_default) > 0 then 1 else 0 end as IsIdentity, case when b.pk_name is null then 0 else 1 end as IsPK, c.DeTextfrom information_schema.columnsleft join (select pg_attr.attname as colname, pg_constraint.conname as pk_namefrom pg_constraintjoin pg_class on pg_constraint.conrelid = pg_class.oidjoin pg_attribute pg_attr on pg_attr.attrelid = pg_class.oidand pg_attr.attnum = pg_constraint.conkey[1]join pg_type on pg_type.oid = pg_attr.atttypidwhere pg_class.relname = (select tblname from param)and pg_constraint.contype = 'p') b on b.colname = information_schema.columns.column_nameleft join (select attname, description as DeTextfrom pg_classleft join pg_attribute pg_attr on pg_attr.attrelid = pg_class.oidleft join pg_description pg_desc on pg_desc.objoid = pg_attr.attrelidand pg_desc.objsubid = pg_attr.attnumwhere pg_attr.attnum > 0and pg_attr.attrelid = pg_class.oidand pg_class.relname = (select tblname from param)) c on c.attname = information_schema.columns.column_namewhere table_schema = 'public'and table_name = (select tblname from param)order by ordinal_position asc)
select * from base_info
相关文章:
PostgreSQL 查询数据表、视图信息
--获得指定schema范围内的所有表和视图的列表,可指定一个排除表前缀模式with param as (select public,iit as schema_name,db2g% as exclude_pattern),base_info as (--获得所有基表select pg_namespace.nspname as schema_name, a.relname as tbl_name ,TBL as tb…...
手撕vector容器
一、vector容器的介绍 vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素,但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。 总结:vector是一个动态…...
PyMuPDF`库实现PDF旋转功能
本文介绍了一个简单的Python应用程序,用于将PDF文件转换为旋转90度的PDF文件。主要用于csdn网站中导出的博客pdf是横向的,看起来不是很方便,才想到用python编制一个将pdf从横向转为纵向的功能。 功能 该PDF转换工具具有以下功能:…...
微人事 登录问题完善
重启服务端的时候,发现前端页面会操作不了,这样后端session会失效,我们就需要让页面重新跳转到登录页 springsecurity配置类后端配置 前端拦截器进行拦截跳转...
【业务功能篇64】安装docker容器,在docker上安装mysql
docker教程: https://www.runoob.com/docker/docker-tutorial.html卸载docker 较旧的 Docker 版本称为 docker 或 docker-engine 。如果已安装这些程序,请卸载它们以及相关的依赖项。 yum remove docker docker-client docker-client-latest docker-co…...
MyBatis的基本概念和核心组件
MyBatis的基本概念 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Pla…...
sql update执行返回0,能否判断数据不存在
答案:不能。 update执行返回0的情况 1、没有找到需要更新的数据,就是这条记录不存在 例如:where后面的条件是id0,那这条记录肯定是不存在的,返回结果是0 2、更新时的数据和要更新的数据完全一致时 例如:更…...
数据分析 | 调用Optuna库实现基于TPE的贝叶斯优化 | 以随机森林回归为例
1. Optuna库的优势 对比bayes_opt和hyperoptOptuna不仅可以衔接到PyTorch等深度学习框架上,还可以与sklearn-optimize结合使用,这也是我最喜欢的地方,Optuna因此特性可以被使用于各种各样的优化场景。 2. 导入必要的库及加载数据 用的是sklea…...
stm32单片机开关输入控制蜂鸣器参考代码(附PROTEUS电路图)
说明:这个buzzer的额定电压需要改为3V,否则不会叫,源代码几乎是完全一样的 //gpio.c文件 /* USER CODE BEGIN Header */ /********************************************************************************* file gpio.c* brief Thi…...
打印X型的图案
int main() {int n0;int i0;int j0;scanf("%d",&n);for(i0;i<n;i){for(j0;j<n;j){if(ij){printf("*");}else if((ij)n-1){printf("*");}elseprintf(" ");}printf("\n");}return 0; }...
不含数字的webshell绕过
异或操作原理 1.首先我们得了解一下异或操作的原理 在php中,异或操作是两个二进制数相同时,异或(相同)为0,不同为1 举个例子 A的ASCII值是65,对应的二进制值是0100 0001 的ASCII值是96,对应的二进制值是 0110 000…...
Mac上传项目源代码到GitHub的修改更新
Mac上传项目源代码到GitHub的修改更新 最近在学习把代码上传到github,不得不说,真的还挺方便 这是一个关于怎样更新项目代码的教程。 首先,在本地终端命令行打开至项目文件下第一步:查看当前的git仓库状态,可以使用git…...
Android6:片段和导航
创建项目Secret Message strings.xml <resources><string name"app_name">Secret Message</string><string name"welcome_text">Welcome to the Secret Message app!Use this app to encrypt a secret message.Click on the Star…...
ClickHouse AST is too big 报错问题处理记录
ClickHouse AST is too big 报错问题处理记录 问题描述问题分析解决方案1、修改系统配置2、修改业务逻辑 问题描述 项目中统计报表的查询出现 AST is too big 问题,报错信息如下: 问题分析 报错信息显示 AST is too big。 AST 表示查询语法树中的最大…...
DPDK系列之二十七DIDO
一、DIDO介绍 随着计算机技术发展,特别是应用技术的快速发展。应用场景对计算机的处理速度几乎已经到了疯狂的地步。说句大白话,再快的CPU也嫌慢。没办法,CPU和IO等技术基本目前都处在了瓶颈之处,大幅度提高,短时间内…...
《游戏编程模式》学习笔记(七)状态模式 State Pattern
状态模式的定义 允许对象在当内部状态改变时改变其行为,就好像此对象改变了自己的类一样。 举个例子 在书的示例里要求你写一个人物控制器,实现跳跃功能 直觉上来说,我们代码会这么写: void Heroine::handleInput(Input input…...
博客系统之功能测试
博客系统共有:用户登录功能、发布博客功能、查看文章详情功能、查看文章列表功能、删除文章功能、退出功能 1.登录功能: 1.1测试对象:用户登录 1.2测试用例 方法:判定表 用例 编号 操作步骤预期结果实际结果截图1 1.用户名正确…...
CJS和 ES6 的语法区别
CommonJS 使用 module.exports 导出模块。ES6 使用 export 导出模块。 示例代码: CommonJS(CJS)模块的导出: // 导出模块 module.exports {foo: bar,baz: function() {return qux;} }; ES6 模块的导出: // 导出模…...
ArcGIS Pro如何制作不规则形状图例
在默认的情况下,ArcGIS Pro生成的图例是标准的点、直线和矩形的,对于湖泊等要素而言,这样的表示方式不够直观,我们可以将其优化一下,制作不规则的线和面来代替原有图例,这里为大家介绍一下制作方法…...
微软Win11 Dev预览版Build23526发布
近日,微软Win11 Dev预览版Build23526发布,修复了不少问题。牛比如斯Microsoft,也有这么多bug,所以你写再多bug也不作为奇啊。 主要更新问题 [开始菜单] 修复了在高对比度主题下,打开开始菜单中的“所有应…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...
招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...
【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...
Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...
