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

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

Groovy 代码示例

groovy 复制代码
import groovy.sql.Sql

def 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_name
        FROM information_schema.tables
        WHERE 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_type
            FROM information_schema.columns
            WHERE 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 驱动依赖:

groovy 复制代码
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)的表,修改查询条件:

groovy 复制代码
WHERE table_schema = 'myschema'

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

groovy 复制代码
WHERE table_type = 'BASE TABLE'

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

相关推荐
Arva .16 小时前
MySQL 中的 MVCC
数据库·mysql
毕设十刻16 小时前
基于Vue的鲜花销售系统33n62(程序 + 源码 + 数据库 + 调试部署 + 开发环境配置),配套论文文档字数达万字以上,文末可获取,系统界面展示置于文末
前端·数据库·vue.js
Boilermaker199216 小时前
【MySQL】数据目录与日志开篇
数据库·mysql
李慕婉学姐16 小时前
Springboot加盟平台推荐可视化系统ktdx2ldg(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
小满、18 小时前
MySQL :实用函数、约束、多表查询与事务隔离
数据库·mysql·事务·数据库函数·多表查询
百***353319 小时前
PostgreSQL_安装部署
数据库·postgresql
rayylee21 小时前
生活抱怨与解决方案app
数据库·生活
Lucifer三思而后行1 天前
使用 BR 备份 TiDB 到 AWS S3 存储
数据库·tidb·aws
百***17071 天前
Oracle分页sql
数据库·sql·oracle
qq_436962181 天前
数据中台:打破企业数据孤岛,实现全域资产化的关键一步
数据库·人工智能·信息可视化·数据挖掘·数据分析