Postgresql和JDBC检查元数据中的TYPE ENUM

问题描述 投票:0回答:1

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

的示例查询
java database postgresql jdbc
1个回答
0
投票

由于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)
© www.soinside.com 2019 - 2024. All rights reserved.