我正在使用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元数据中查询精度细节吗?
答案 0 :(得分:2)
对于未来的参考者: -
int precision = cols.getInt("DECIMAL_DIGITS");
这很好用!感谢alex和Mark。
答案 1 :(得分:0)
<img src="{{ action('MediaController@imageShow', ['folder' => 'countries', 'image' => $country->code.'.png']) }}" />
提供ResultSetMetaData
和getScale(int col)
方法。如果那些人没有给你你想要的东西,你可能会运气不好。