在 Groovy 中遍历 PostgreSQL 所有用户表,你可以使用 JDBC 连接数据库并执行 SQL 查询。以下是一个完整的示例:
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 驱动依赖:
dependencies {
implementation 'org.postgresql:postgresql:42.6.0'
}
关键说明
- 数据库连接:使用
Sql.newInstance()
创建连接,需要替换为你的数据库 URL、用户名和密码。 - 查询用户表:通过
information_schema.tables
系统视图过滤出public
模式下的普通表(BASE TABLE
)。 - 遍历结果:使用
eachRow()
方法处理查询结果集,将表名收集到列表中。 - 可选表结构:示例中包含了获取表列信息的代码,可根据需要启用。
- 异常处理:使用
try-catch-finally
确保资源正确关闭。
其他模式的表
如果需要查询其他模式(如 myschema
)的表,修改查询条件:
WHERE table_schema = 'myschema'
如果需要查询所有模式的表,移除 table_schema
过滤条件:
WHERE table_type = 'BASE TABLE'
这个脚本可以作为自动化数据库检查或元数据收集工具的基础。