我正在尝试获取数据库元数据并确定是否存在我创建的表。我可以获取已创建的表,但是在元数据中获取TYPE ENUM时遇到了问题。您可以找到我拥有的JDBC代码,该怎么办才能获得TYPE ENUM?
bwlow代码可以很好地打印出我创建的表,但是我无法获得我创建的ENUM TYPE。我是否应该添加其他任何类型,例如ENUM
?
void printDBTables(@NonNull final Connection connection) throws SQLException {
final DatabaseMetaData dbMetadata = connection.getMetaData();
final String[] types = {"TABLE"};
final ResultSet rs = dbMetadata.getTables(null, null, null, types);
while (rs.next()) {
log.info("Found Table with name: {}", rs.getString(3));
}
我对Java并不陌生,不胜感激。以下是我正在使用CREATE TYPE TESTQ AS ENUM ('ONE', 'TWO', 'THREE');
由于enum
类型不是标准SQL,所以不能期望JDBC为它们提供任何准备。
您必须查询PostgreSQL元数据:
SELECT t.typname, e.enumlabel
FROM pg_type AS t
JOIN pg_enum AS e ON t.oid = e.enumtypid
WHERE t.typname = 'testq'
ORDER BY e.enumsortorder;
typname | enumlabel
---------+-----------
testq | ONE
testq | TWO
testq | THREE
(3 rows)