我正在尝试获取数据库元数据,并确定是否存在我创建的表。我能够获取已创建的表,但是在元数据中获取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)