diff --git a/server/src/main/java/edp/core/enums/DataTypeEnum.java b/server/src/main/java/edp/core/enums/DataTypeEnum.java index 688adb4e6..d49bcd119 100644 --- a/server/src/main/java/edp/core/enums/DataTypeEnum.java +++ b/server/src/main/java/edp/core/enums/DataTypeEnum.java @@ -26,6 +26,8 @@ public enum DataTypeEnum { MYSQL("mysql", "mysql", "com.mysql.cj.jdbc.Driver", "`", "`", "'", "'"), + HIVE2("hive2", "hive", "org.apache.hive.jdbc.HiveDriver", "`", "`", "`", "`"), + ORACLE("oracle", "oracle", "oracle.jdbc.driver.OracleDriver", "\"", "\"", "\"", "\""), SQLSERVER("sqlserver", "sqlserver", "com.microsoft.sqlserver.jdbc.SQLServerDriver", "\"", "\"", "\"", "\""), diff --git a/server/src/main/java/edp/core/utils/SqlUtils.java b/server/src/main/java/edp/core/utils/SqlUtils.java index 79d4153b7..294cbf3ee 100644 --- a/server/src/main/java/edp/core/utils/SqlUtils.java +++ b/server/src/main/java/edp/core/utils/SqlUtils.java @@ -442,9 +442,15 @@ public List getDatabases() throws SourceException { dbList.add(catalog); } else { DatabaseMetaData metaData = connection.getMetaData(); - ResultSet rs = metaData.getCatalogs(); - while (rs.next()) { - dbList.add(rs.getString(1)); + ResultSet rs = null; + if (dataTypeEnum == HIVE2) + rs = metaData.getSchemas(); + else + rs = metaData.getCatalogs(); + if (rs != null) { + while (rs.next()) { + dbList.add(rs.getString(1)); + } } } @@ -478,7 +484,10 @@ public List getTableList(String dbName) throws SourceException { DatabaseMetaData metaData = connection.getMetaData(); String schema = null; try { - schema = metaData.getConnection().getSchema(); + if (dataTypeEnum == HIVE2) + schema = dbName; + else + schema = metaData.getConnection().getSchema(); } catch (Throwable t) { // ignore } @@ -527,6 +536,7 @@ private String getDBSchemaPattern(String schema) { schemaPattern = "dbo"; break; case CLICKHOUSE: + case HIVE2: case PRESTO: if (!StringUtils.isEmpty(schema)) { schemaPattern = schema;