From 48af3599df35ff00488ddb8f74699698dae34a5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E7=AB=8B=E5=AE=8F?= <2198083211@qq.com> Date: Fri, 24 Nov 2023 17:31:12 +0800 Subject: [PATCH] =?UTF-8?q?feat(Strategy):=20=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E6=A8=A1=E5=9D=97=E9=80=82=E5=BA=94Oracle?= =?UTF-8?q?=E3=80=81SqlServer=E6=95=B0=E6=8D=AE=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../strategyImpl/BaseDataSource.java | 44 +++++------ .../strategyImpl/DataSourceHive.java | 2 +- .../strategyImpl/DataSourceOracle.java | 73 +++++++++++++++++++ .../strategyImpl/DataSourceSQLServer.java | 27 ++++++- pom.xml | 19 +++-- 5 files changed, 133 insertions(+), 32 deletions(-) diff --git a/application-webadmin/src/main/java/supie/webadmin/app/service/databasemanagement/strategyImpl/BaseDataSource.java b/application-webadmin/src/main/java/supie/webadmin/app/service/databasemanagement/strategyImpl/BaseDataSource.java index 466c7ce..2ea93e0 100644 --- a/application-webadmin/src/main/java/supie/webadmin/app/service/databasemanagement/strategyImpl/BaseDataSource.java +++ b/application-webadmin/src/main/java/supie/webadmin/app/service/databasemanagement/strategyImpl/BaseDataSource.java @@ -265,6 +265,28 @@ public class BaseDataSource { throw new RuntimeException("数据库创建[" + resultMap.get("sql") + "]失败!" + resultMap.get("message").toString()); } + /** + * 查询可操作的所有数据库名称 + * + * @return 该账户可操作的所有数据库集 + * @author 王立宏 + * @date 2023/11/23 03:29 + */ + public List queryAllDatabaseName() { + List databaseNameList = new ArrayList<>(); + try { + Statement statement = connection.createStatement(); + ResultSet resultSet = statement.executeQuery(queryAllDatabaseNameSql); + while (resultSet.next()) { + databaseNameList.add(resultSet.getString(1)); + } + resultSet.close(); + } catch (SQLException e) { + throw new RuntimeException(e); + } + return databaseNameList; + } + /** * 查询数据库数据表名及类型 * @param databaseName @@ -337,28 +359,6 @@ public class BaseDataSource { return resultData; } - /** - * 查询可操作的所有数据库名称 - * - * @return 该账户可操作的所有数据库集 - * @author 王立宏 - * @date 2023/11/23 03:29 - */ - public List queryAllDatabaseName() { - List databaseNameList = new ArrayList<>(); - try { - Statement statement = connection.createStatement(); - ResultSet resultSet = statement.executeQuery(queryAllDatabaseNameSql); - while (resultSet.next()) { - databaseNameList.add(resultSet.getString(1)); - } - resultSet.close(); - } catch (SQLException e) { - throw new RuntimeException(e); - } - return databaseNameList; - } - /** * 获取表结构 * diff --git a/application-webadmin/src/main/java/supie/webadmin/app/service/databasemanagement/strategyImpl/DataSourceHive.java b/application-webadmin/src/main/java/supie/webadmin/app/service/databasemanagement/strategyImpl/DataSourceHive.java index de9340f..8181b54 100644 --- a/application-webadmin/src/main/java/supie/webadmin/app/service/databasemanagement/strategyImpl/DataSourceHive.java +++ b/application-webadmin/src/main/java/supie/webadmin/app/service/databasemanagement/strategyImpl/DataSourceHive.java @@ -30,7 +30,7 @@ public class DataSourceHive extends BaseDataSource implements Strategy { @Override public void initStrategy(String hostIp, String hostPort, String databaseName, String userName, String password) { this.databaseType = DataBaseTypeEnum.DATASOURCE_HIVE; - this.jdbcDriver = "org.apache.hadoop.hive.jdbc.HiveDriver"; + this.jdbcDriver = "org.apache.hive.jdbc.HiveDriver"; if (StrUtil.isBlank(databaseName)) { this.jdbcUrl = "jdbc:hive2://" + hostIp + ":" + hostPort; } else { diff --git a/application-webadmin/src/main/java/supie/webadmin/app/service/databasemanagement/strategyImpl/DataSourceOracle.java b/application-webadmin/src/main/java/supie/webadmin/app/service/databasemanagement/strategyImpl/DataSourceOracle.java index fd69ece..5aa0d02 100644 --- a/application-webadmin/src/main/java/supie/webadmin/app/service/databasemanagement/strategyImpl/DataSourceOracle.java +++ b/application-webadmin/src/main/java/supie/webadmin/app/service/databasemanagement/strategyImpl/DataSourceOracle.java @@ -7,6 +7,8 @@ import org.springframework.stereotype.Component; import supie.webadmin.app.service.databasemanagement.*; import javax.annotation.PostConstruct; +import java.sql.*; +import java.util.*; /** * Oracle @@ -45,4 +47,75 @@ public class DataSourceOracle extends BaseDataSource implements Strategy { initConnection(); } + /** + * 创建数据库 + * + * @param databaseName 创建的数据库的名称 + * @author 王立宏 + * @date 2023/11/02 04:30 + */ + @Override + public void createDatabase(String databaseName) { +// super.createDatabase(databaseName); + /* + BEGIN + DBMS_SERVICE.create_service( + service_name => 'my_new_service', + network_name => 'my_new_service' + ); + END; + */ + throw new RuntimeException("无法在Oracle数据库中创建[" + databaseName + "]数据库,请手动Oracle中添加[" + databaseName + "]数据库"); + } + + /** + * 查询可操作的所有数据库名称 + * + * @return 该账户可操作的所有数据库集 + * @author 王立宏 + * @date 2023/11/23 03:29 + */ + @Override + public List queryAllDatabaseName() { + this.queryAllDatabaseNameSql = "SELECT NAME FROM V$DATABASE"; +// this.queryAllDatabaseNameSql = "SELECT USERNAME FROM ALL_USERS"; + return super.queryAllDatabaseName(); + } + + /** + * 查询数据库数据表名及类型 + * + * @param databaseName + * @return + */ + @Override + public List> queryDatabaseTable(String databaseName) { + ArrayList> tableList = new ArrayList<>(); + try { + DatabaseMetaData metaData = connection.getMetaData(); + // 获取所有表的元数据信息 + ResultSet resultSet = metaData.getTables(null, this.userName.toUpperCase(), "%", new String[]{"TABLE"}); + // 循环TABLE,将结果记录在Map中 + while (resultSet.next()) { + HashMap tableMap = new HashMap<>(); + // 获取表所属的schema + String tableSchema = resultSet.getString("TABLE_SCHEM"); + // 表名 + String tableName = resultSet.getString("TABLE_NAME"); + // 表类型 + String tableType = resultSet.getString("TABLE_TYPE"); + // 注释 + String tableComment = resultSet.getString("REMARKS"); + tableMap.put("tableSchema",tableSchema); + tableMap.put("table",tableName); + tableMap.put("remarks",tableComment); + tableList.add(tableMap); + } + resultSet.close(); + } catch (SQLException e) { + throw new RuntimeException(e); + } + return tableList; + } + } diff --git a/application-webadmin/src/main/java/supie/webadmin/app/service/databasemanagement/strategyImpl/DataSourceSQLServer.java b/application-webadmin/src/main/java/supie/webadmin/app/service/databasemanagement/strategyImpl/DataSourceSQLServer.java index a7b7da7..2f8488a 100644 --- a/application-webadmin/src/main/java/supie/webadmin/app/service/databasemanagement/strategyImpl/DataSourceSQLServer.java +++ b/application-webadmin/src/main/java/supie/webadmin/app/service/databasemanagement/strategyImpl/DataSourceSQLServer.java @@ -7,6 +7,7 @@ import org.springframework.stereotype.Component; import supie.webadmin.app.service.databasemanagement.*; import javax.annotation.PostConstruct; +import java.util.List; @Slf4j @Component @@ -30,7 +31,7 @@ public class DataSourceSQLServer extends BaseDataSource implements Strategy { if (StrUtil.isBlank(databaseName)) { this.jdbcUrl = "jdbc:sqlserver://" + hostIp + ":" + hostPort; } else { - this.jdbcUrl = "jdbc:sybase://" + hostIp + ":" + hostPort + ";databaseName=" + databaseName; + this.jdbcUrl = "jdbc:sqlserver://" + hostIp + ":" + hostPort + ";databaseName=" + databaseName; } this.hostIp = hostIp; this.hostPort = hostPort; @@ -41,4 +42,28 @@ public class DataSourceSQLServer extends BaseDataSource implements Strategy { initConnection(); } + /** + * 查询可操作的所有数据库名称 + * + * @return 该账户可操作的所有数据库集 + * @author 王立宏 + * @date 2023/11/23 03:29 + */ + @Override + public List queryAllDatabaseName() { + this.queryAllDatabaseNameSql = "SELECT name FROM sys.databases;"; + return super.queryAllDatabaseName(); +// List databaseNameList = new ArrayList<>(); +// try { +// DatabaseMetaData metaData = connection.getMetaData(); +// ResultSet resultSet = metaData.getCatalogs(); +// while (resultSet.next()) { +// databaseNameList.add(resultSet.getString("TABLE_CAT")); +// } +// resultSet.close(); +// } catch (SQLException e) { +// throw new RuntimeException(e); +// } +// return databaseNameList; + } } diff --git a/pom.xml b/pom.xml index 5583288..67aaf52 100644 --- a/pom.xml +++ b/pom.xml @@ -70,20 +70,23 @@ com.oracle.database.jdbc ojdbc8 - 23.3.0.23.09 - - + 23.3.0.23.09 - com.h2database - h2 - 2.2.224 - + + com.oracle.database.nls + orai18n + 23.3.0.23.09 com.microsoft.sqlserver mssql-jdbc - 12.5.0.jre11-preview + 7.4.1.jre8 + + + org.apache.hive + hive-jdbc + 3.1.2 -- Gitee