我正在使用jdbc从teradata获取元数据,我希望获得所有的数据类型。但是,对于包含DECIMAL(10,4)的DB字段,我无法获得精度。我附上了我的代码片段。欢迎您的建议!
DatabaseMetaData md = con.getMetaData();
ResultSet tbls = md.getTables(null, schema, name, null);
if(false == tbls.next()){
nonExistingRdbmsTables.add(name);
LOGGER.error("Table with name {} in schema {} does not exists in source database", name, schema);
continue;
}
RdbmsTableMetadata tableMD = new RdbmsTableMetadata();
List<String> pkList = new ArrayList();
ResultSet primaryKeys = md.getPrimaryKeys(null, schema, name);
while(primaryKeys.next()){
String pk = primaryKeys.getString("COLUMN_NAME");
pkList.add(pk);
}
tableMD.setPkList(pkList);
LOGGER.info("*****Primary key list for table {} is {}", name, pkList);
tableMD.setSchema(schema);
tableMD.setName(name);
tableMD.setTargetName(targetName);
tableMD.setTargetSchema(targetSchema);
List<Column> colList = new ArrayList<>();
ResultSet cols = md.getColumns(null, schema, name, null);
while (cols.next()) {
String columnName = cols.getString("COLUMN_NAME");
String columnType = cols.getString("TYPE_NAME");
String columnLength = cols.getString("COLUMN_SIZE");
}有没有办法可以从jdbc元数据中查询精度详细信息?
发布于 2016-12-12 17:03:48
对于未来的参考者:
int precision = cols.getInt("DECIMAL_DIGITS");这工作得很好!感谢亚历克斯和马克。
发布于 2016-12-12 16:03:00
ResultSetMetaData提供了getScale(int col)和getPrecision(int col)方法。如果这些不能给你想要的东西,你可能就不走运了。
https://stackoverflow.com/questions/41096353
复制相似问题