java - Postgresql 和 JDBC 检查元数据中的 TYPE ENUM
问题描述
我正在尝试获取数据库元数据并确定我创建的表是否存在。我能够获取我创建的表,但我面临在元数据中获取 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)
推荐阅读
- flutter - 使用动画在 ListView 中显示/隐藏小部件
- echarts - 如何在基本面积图中获得当前强调/突出显示的系列?
- algorithm - 如何使用多个引导进行引导过滤
- aix - AIX 中的剪切命令
- python - 用 spark 中的 group-by 其他列填充 NaN
- makefile - 如何将 Keil MDK 生成的 .lib 文件添加到 GCC 项目中
- javascript - 将 select2 添加到动态添加的元素
- c# - 警报管理和实时图表 C#
- python - groupBy后如何提取数据
- c++ - 为什么我不能从范围迭代器构造 string_view?