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'

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

相关推荐
倒流时光三十年11 分钟前
SpringBoot 数据库同步 Elasticsearch 性能优化
数据库·spring boot·elasticsearch
码农小卡拉34 分钟前
深入解析Spring Boot文件加载顺序与加载方式
java·数据库·spring boot
怣5038 分钟前
MySQL多表连接:全外连接、交叉连接与结果集合并详解
数据库·sql
wjhx1 小时前
QT中对蓝牙权限的申请,整理一下
java·数据库·qt
冰暮流星1 小时前
javascript之二重循环练习
开发语言·javascript·数据库
万岳科技系统开发2 小时前
食堂采购系统源码库存扣减算法与并发控制实现详解
java·前端·数据库·算法
冉冰学姐2 小时前
SSM智慧社区管理系统jby69(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·管理系统·智慧社区·ssm 框架
杨超越luckly2 小时前
HTML应用指南:利用GET请求获取中国500强企业名单,揭秘企业增长、分化与转型的新常态
前端·数据库·html·可视化·中国500强
Elastic 中国社区官方博客2 小时前
Elasticsearch:Workflows 介绍 - 9.3
大数据·数据库·人工智能·elasticsearch·ai·全文检索
仍然.2 小时前
MYSQL--- 聚合查询,分组查询和联合查询
数据库