当前位置: 首页 > backend >正文

groovy 如何遍历 postgresql 所有的用户表 ?

在 Groovy 中遍历 PostgreSQL 所有用户表,你可以使用 JDBC 连接数据库并执行 SQL 查询。以下是一个完整的示例:

Groovy 代码示例

import groovy.sql.Sqldef config = [url: 'jdbc:postgresql://localhost:5432/your_database',user: 'your_username',password: 'your_password',driver: 'org.postgresql.Driver'
]try {// 创建数据库连接def sql = Sql.newInstance(config.url, config.user, config.password, config.driver)// 查询所有用户表(public 模式)def tables = []sql.eachRow("""SELECT table_nameFROM information_schema.tablesWHERE table_schema = 'public'AND table_type = 'BASE TABLE'ORDER BY table_name""") { row ->tables << row.table_name}// 输出结果println "找到 ${tables.size()} 个用户表:"tables.each { table ->println "- ${table}"// 可选:遍历表结构def columns = []sql.eachRow("""SELECT column_name, data_typeFROM information_schema.columnsWHERE table_name = '${table}'ORDER BY ordinal_position""") { col ->columns << "${col.column_name} (${col.data_type})"}println "  列:${columns.join(', ')}"}} catch (Exception e) {println "数据库操作失败:${e.message}"e.printStackTrace()
} finally {// 关闭连接if (sql) sql.close()
}

依赖配置

确保在 build.gradle 中添加 PostgreSQL 驱动依赖:

dependencies {implementation 'org.postgresql:postgresql:42.6.0'
}

关键说明

  1. 数据库连接:使用 Sql.newInstance() 创建连接,需要替换为你的数据库 URL、用户名和密码。
  2. 查询用户表:通过 information_schema.tables 系统视图过滤出 public 模式下的普通表(BASE TABLE)。
  3. 遍历结果:使用 eachRow() 方法处理查询结果集,将表名收集到列表中。
  4. 可选表结构:示例中包含了获取表列信息的代码,可根据需要启用。
  5. 异常处理:使用 try-catch-finally 确保资源正确关闭。

其他模式的表

如果需要查询其他模式(如 myschema)的表,修改查询条件:

WHERE table_schema = 'myschema'

如果需要查询所有模式的表,移除 table_schema 过滤条件:

WHERE table_type = 'BASE TABLE'

这个脚本可以作为自动化数据库检查或元数据收集工具的基础。

http://www.xdnf.cn/news/6313.html

相关文章:

  • 【golang】DNS 资源记录(RR)接口
  • 深度学习、机器学习及强化学习的联系与区别
  • 「Java EE开发指南」如何使用MyEclipse的可视化JSF编辑器设计JSP?(二)
  • 安全巡检清单-落地版
  • 使用 Apache POI 生成 Word 文档
  • 为什么elasticsearch配置文件JVM配置31G最佳
  • TensorFlow深度学习实战(16)——注意力机制详解
  • ESP32简介及相关使用
  • 基于React的高德地图api教程004:线标记绘制、修改、删除功能实现
  • 解密LLM重复输出:Max Token设置与模型机制
  • 基于面向对象设计的C++日期推算引擎:精准高效的时间运算实现与运算重载工程化实践
  • Linux操作系统实战:中断源码的性能分析(转)
  • 基于EFISH-SCB-RK3576/SAIL-RK3576的矿用本安型手持终端技术方案‌
  • 散列表(1)
  • [思维模式-37]:什么是事?什么是物?什么事物?如何通过数学的方法阐述事物?
  • 1. this指向的指向规则
  • 30天通过软考高项-质量论文
  • 多模态和多智能体系统与理性的结合综述研究
  • python: *args 与 **kwargs 用法
  • 【KWDB 创作者计划】MySQL数据库迁移至KWDB的完整实践指南
  • 强化学习_PPO算法
  • 2025最新出版 Microsoft Project由入门到精通(八)
  • rocketmq 拉取消息
  • 信奥赛-刷题笔记-队列篇-T3-P2058海港和P1886单调队列
  • sip协议栈--sip结构分析
  • 大模型哲学:语言的边界就是世界的边界
  • 并查集算法的学习
  • React学习———useContext和useReducer
  • 香橙派zero3 安卓12 TV,遥控器关机。重启?
  • AD 规则的使能及优先级的设置