jdbc获取数据库表结构
2023-03-07 09:11:47 时间
public void getTables(Connection con, String catalog, String schemaPattern, String tableNamePattern) throws SQLException {
// 获取数据库元数据
DatabaseMetaData metaData = con.getMetaData();
// 查询表元数据,pattern可使用通配符查询(%,?)
ResultSet tableRet = metaData.getTables(
catalog,
schemaPattern,
tableNamePattern,
new String[]{"TABLE","VIEW"}
);
// 遍历表
while (tableRet.next()) {
String tableName = tableRet.getString("TABLE_NAME");
System.out.println("======" + tableName + "======");
// 查找表字段元数据
ResultSet colRet = metaData.getColumns(
catalog,
schemaPattern,
tableName,
"%"
);
// 遍历表字段
while (colRet.next()) {
// 字段名
String columnName = colRet.getString("COLUMN_NAME");
// 字段类型
String typeName = colRet.getString("TYPE_NAME");
// 字段大小
Integer columnSize = colRet.getInt("COLUMN_SIZE");
// 数字类型精度值
Integer decimalDigits = colRet.getInt("DECIMAL_DIGITS");
// 可为空值
Boolean nullable = colRet.getBoolean("NULLABLE");
System.out.println(
columnName
+ ":"
+ typeName
+ "(" + columnSize + "," + decimalDigits + ")"
+ (nullable ? " nullable" : "")
);
}
}
}
注:不同数据库对catalog,schema有不同的实现
数据库 | catalog | schema |
---|---|---|
mysql | 库名 | 不支持(null) |
oracle | 不支持() | 用户名 |
mssql | 库名 | owner |
输出样例:
t_log id:BIGINT(19,0) content:VARCHAR(128,0) nullable log_created:DATETIME(26,0) log_modified:DATETIME(26,0)
相关文章
- 数据库——排序与分页
- Flink使用Table和SQL语法操作Hive(Java版)
- 通过Zookeeper获取激活的HDFS节点
- 产业数字化语境下的计算人才培养:产教融合的突围战
- 下代技术提前应用到荣耀Magic3系列,以融合计算摄影发动降维打击
- 一道题让你理解浮点型数据在内存的存储方式
- C语言基础--数据类型
- 十三届双11,一部电商流量变迁史
- “新时尚”到“好习惯”,上海垃圾分类背后的智慧监管
- 一份安平大奖,窥探平安智慧城市的底层逻辑
- 解读《海纳云智慧城市白皮书》:智慧城市的风吹向何处?
- 深耕万亿城市AIoT市场,旷视如何发力城市大空间?
- 都是用颗粒 为什么SSD有读写上限而内存却没
- SSD的寿命要怎么算?
- 不格式化硬盘 机密数据也能安全清除:Windows自带命令就能做
- mongodb 数据库
- 华为OceanStor Pacific斩获IO500榜单第二,数据存储的“时”与“势”
- 智能手机的影像比拼,能否逃离内卷陷阱?
- 得“数据智能”者得天下,特斯拉、毫末智行、小鹏抢跑2022辅助驾驶赛道下半场
- 车企反向造手机,两个生态的裂痕能否弥合?