diff --git a/chat2db-server/chat2db-plugins/chat2db-clickhouse/src/main/java/ai/chat2db/plugin/clickhouse/ClickHouseDBManage.java b/chat2db-server/chat2db-plugins/chat2db-clickhouse/src/main/java/ai/chat2db/plugin/clickhouse/ClickHouseDBManage.java index cf1797c5..75d782d2 100644 --- a/chat2db-server/chat2db-plugins/chat2db-clickhouse/src/main/java/ai/chat2db/plugin/clickhouse/ClickHouseDBManage.java +++ b/chat2db-server/chat2db-plugins/chat2db-clickhouse/src/main/java/ai/chat2db/plugin/clickhouse/ClickHouseDBManage.java @@ -10,16 +10,10 @@ import java.sql.*; import java.util.Objects; public class ClickHouseDBManage extends DefaultDBManage implements DBManage { - @Override - public String exportDatabaseData(Connection connection, String databaseName, String schemaName, String tableName) throws SQLException { - StringBuilder sqlBuilder = new StringBuilder(); - exportTableData(connection, tableName, sqlBuilder); - return sqlBuilder.toString(); - } @Override public String exportDatabase(Connection connection, String databaseName, String schemaName, boolean containData) throws SQLException { StringBuilder sqlBuilder = new StringBuilder(); - exportTablesOrViewsOrDictionaries(connection, sqlBuilder, databaseName, containData); + exportTablesOrViewsOrDictionaries(connection, sqlBuilder, databaseName, schemaName,containData); exportFunctions(connection, sqlBuilder); return sqlBuilder.toString(); } @@ -35,7 +29,7 @@ public class ClickHouseDBManage extends DefaultDBManage implements DBManage { } } - private void exportTablesOrViewsOrDictionaries(Connection connection, StringBuilder sqlBuilder, String databaseName, boolean containData) throws SQLException { + private void exportTablesOrViewsOrDictionaries(Connection connection, StringBuilder sqlBuilder, String databaseName, String schemaName, boolean containData) throws SQLException { String sql =String.format("SELECT create_table_query, has_own_data,engine,name from system.`tables` WHERE `database`='%s'", databaseName); try (Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery(sql)) { while (resultSet.next()) { @@ -53,7 +47,7 @@ public class ClickHouseDBManage extends DefaultDBManage implements DBManage { sqlBuilder.append("DROP TABLE IF EXISTS ").append(databaseName).append(".").append(tableOrViewName) .append(";").append("\n").append(ddl).append(";").append("\n"); if (containData && dataFlag) { - exportTableData(connection, tableOrViewName, sqlBuilder); + exportTableData(connection,schemaName, tableOrViewName, sqlBuilder); } } } @@ -61,30 +55,6 @@ public class ClickHouseDBManage extends DefaultDBManage implements DBManage { } - private void exportTableData(Connection connection, String tableName, StringBuilder sqlBuilder) throws SQLException { - String sql = String.format("select * from %s", tableName); - try (ResultSet resultSet = connection.createStatement().executeQuery(sql)) { - ResultSetMetaData metaData = resultSet.getMetaData(); - while (resultSet.next()) { - sqlBuilder.append("INSERT INTO ").append(tableName).append(" VALUES ("); - for (int i = 1; i <= metaData.getColumnCount(); i++) { - String value = resultSet.getString(i); - if (Objects.isNull(value)) { - sqlBuilder.append("NULL"); - } else { - sqlBuilder.append("'").append(value).append("'"); - } - if (i < metaData.getColumnCount()) { - sqlBuilder.append(", "); - } - } - sqlBuilder.append(");\n"); - } - sqlBuilder.append("\n"); - } - } - - @Override public Connection getConnection(ConnectInfo connectInfo) { String url = setDatabaseInJdbcUrl(connectInfo); diff --git a/chat2db-server/chat2db-plugins/chat2db-db2/src/main/java/ai/chat2db/plugin/db2/DB2DBManage.java b/chat2db-server/chat2db-plugins/chat2db-db2/src/main/java/ai/chat2db/plugin/db2/DB2DBManage.java index a3035a31..0946d550 100644 --- a/chat2db-server/chat2db-plugins/chat2db-db2/src/main/java/ai/chat2db/plugin/db2/DB2DBManage.java +++ b/chat2db-server/chat2db-plugins/chat2db-db2/src/main/java/ai/chat2db/plugin/db2/DB2DBManage.java @@ -11,28 +11,20 @@ import org.apache.commons.lang3.StringUtils; import java.sql.Connection; import java.sql.ResultSet; -import java.sql.ResultSetMetaData; import java.sql.SQLException; -import java.util.Objects; public class DB2DBManage extends DefaultDBManage implements DBManage { - @Override - public String exportDatabaseData(Connection connection, String databaseName, String schemaName, String tableName) throws SQLException { - StringBuilder sqlBuilder = new StringBuilder(); - exportTableData(connection, tableName, sqlBuilder); - return sqlBuilder.toString(); - } - @Override public String exportDatabase(Connection connection, String databaseName, String schemaName, boolean containData) throws SQLException { StringBuilder sqlBuilder = new StringBuilder(); exportTables(connection, schemaName, sqlBuilder, containData); exportViews(connection, schemaName, sqlBuilder); - exportProceduresAndFunctions(connection,schemaName, sqlBuilder); - exportTriggers(connection, schemaName,sqlBuilder); + exportProceduresAndFunctions(connection, schemaName, sqlBuilder); + exportTriggers(connection, schemaName, sqlBuilder); return sqlBuilder.toString(); } + private void exportTables(Connection connection, String schemaName, StringBuilder sqlBuilder, boolean containData) throws SQLException { try (ResultSet resultSet = connection.getMetaData().getTables(null, schemaName, null, new String[]{"TABLE", "SYSTEM TABLE"})) { while (resultSet.next()) { @@ -53,34 +45,12 @@ public class DB2DBManage extends DefaultDBManage implements DBManage { if (resultSet.next()) { sqlBuilder.append(resultSet.getString("sql")).append("\n"); if (containData) { - exportTableData(connection, tableName, sqlBuilder); + exportTableData(connection, schemaName, tableName, sqlBuilder); } } } } - private void exportTableData(Connection connection, String tableName, StringBuilder sqlBuilder) throws SQLException { - String sql = String.format("select * from %s", tableName); - try (ResultSet resultSet = connection.createStatement().executeQuery(sql)) { - ResultSetMetaData metaData = resultSet.getMetaData(); - while (resultSet.next()) { - sqlBuilder.append("INSERT INTO ").append(tableName).append(" VALUES ("); - for (int i = 1; i <= metaData.getColumnCount(); i++) { - String value = resultSet.getString(i); - if (Objects.isNull(value)) { - sqlBuilder.append("NULL"); - } else { - sqlBuilder.append("'").append(value).append("'"); - } - if (i < metaData.getColumnCount()) { - sqlBuilder.append(", "); - } - } - sqlBuilder.append(");\n"); - } - sqlBuilder.append("\n"); - } - } private void exportViews(Connection connection, String schemaName, StringBuilder sqlBuilder) throws SQLException { String sql = String.format("select TEXT from syscat.views where VIEWSCHEMA='%s';", schemaName); @@ -93,7 +63,7 @@ public class DB2DBManage extends DefaultDBManage implements DBManage { } private void exportProceduresAndFunctions(Connection connection, String schemaName, StringBuilder sqlBuilder) throws SQLException { - String sql =String.format( "select TEXT from syscat.routines where ROUTINESCHEMA='%s';",schemaName); + String sql = String.format("select TEXT from syscat.routines where ROUTINESCHEMA='%s';", schemaName); try (ResultSet resultSet = connection.createStatement().executeQuery(sql)) { while (resultSet.next()) { String ddl = resultSet.getString("TEXT"); @@ -103,9 +73,8 @@ public class DB2DBManage extends DefaultDBManage implements DBManage { } - private void exportTriggers(Connection connection, String schemaName, StringBuilder sqlBuilder) throws SQLException { - String sql = String.format("select * from SYSCAT.TRIGGERS where TRIGSCHEMA = '%s';",schemaName); + String sql = String.format("select * from SYSCAT.TRIGGERS where TRIGSCHEMA = '%s';", schemaName); try (ResultSet resultSet = connection.createStatement().executeQuery(sql)) { while (resultSet.next()) { String ddl = resultSet.getString("TEXT"); @@ -127,9 +96,10 @@ public class DB2DBManage extends DefaultDBManage implements DBManage { e.printStackTrace(); } } + @Override public void dropTable(Connection connection, String databaseName, String schemaName, String tableName) { String sql = "DROP TABLE " + tableName; - SQLExecutor.getInstance().execute(connection,sql, resultSet -> null); + SQLExecutor.getInstance().execute(connection, sql, resultSet -> null); } } diff --git a/chat2db-server/chat2db-plugins/chat2db-dm/src/main/java/ai/chat2db/plugin/dm/DMDBManage.java b/chat2db-server/chat2db-plugins/chat2db-dm/src/main/java/ai/chat2db/plugin/dm/DMDBManage.java index 71334813..44c35fe1 100644 --- a/chat2db-server/chat2db-plugins/chat2db-dm/src/main/java/ai/chat2db/plugin/dm/DMDBManage.java +++ b/chat2db-server/chat2db-plugins/chat2db-dm/src/main/java/ai/chat2db/plugin/dm/DMDBManage.java @@ -22,13 +22,6 @@ public class DMDBManage extends DefaultDBManage implements DBManage { private static String TRIGGER_SQL = "SELECT OWNER, TRIGGER_NAME, TABLE_OWNER, TABLE_NAME, TRIGGERING_TYPE, TRIGGERING_EVENT, STATUS, TRIGGER_BODY " + "FROM ALL_TRIGGERS WHERE OWNER = '%s' AND TRIGGER_NAME = '%s'"; - - @Override - public String exportDatabaseData(Connection connection, String databaseName, String schemaName, String tableName) throws SQLException { - StringBuilder sqlBuilder = new StringBuilder(); - exportTableData(connection, schemaName,tableName, sqlBuilder); - return sqlBuilder.toString(); - } @Override public String exportDatabase(Connection connection, String databaseName, String schemaName, boolean containData) throws SQLException { StringBuilder sqlBuilder = new StringBuilder(); @@ -91,29 +84,6 @@ public class DMDBManage extends DefaultDBManage implements DBManage { } - private void exportTableData(Connection connection, String schemaName, String tableName, StringBuilder sqlBuilder) throws SQLException { - String sql =String.format("SELECT * FROM %s.%s",schemaName,tableName); - try (ResultSet resultSet = connection.createStatement().executeQuery(sql)) { - ResultSetMetaData metaData = resultSet.getMetaData(); - while (resultSet.next()) { - sqlBuilder.append("INSERT INTO ").append(tableName).append(" VALUES ("); - for (int i = 1; i <= metaData.getColumnCount(); i++) { - String value = resultSet.getString(i); - if (Objects.isNull(value)) { - sqlBuilder.append("NULL"); - } else { - sqlBuilder.append("'").append(value).append("'"); - } - if (i < metaData.getColumnCount()) { - sqlBuilder.append(", "); - } - } - sqlBuilder.append(");\n"); - } - sqlBuilder.append("\n"); - } - } - private void exportViews(Connection connection, String schemaName, StringBuilder sqlBuilder) throws SQLException { try (ResultSet resultSet = connection.getMetaData().getTables(null, schemaName, null, new String[]{"VIEW"})) { while (resultSet.next()) { diff --git a/chat2db-server/chat2db-plugins/chat2db-h2/src/main/java/ai/chat2db/plugin/h2/H2DBManage.java b/chat2db-server/chat2db-plugins/chat2db-h2/src/main/java/ai/chat2db/plugin/h2/H2DBManage.java index 334e24e8..7f3bf75e 100644 --- a/chat2db-server/chat2db-plugins/chat2db-h2/src/main/java/ai/chat2db/plugin/h2/H2DBManage.java +++ b/chat2db-server/chat2db-plugins/chat2db-h2/src/main/java/ai/chat2db/plugin/h2/H2DBManage.java @@ -15,13 +15,6 @@ import java.sql.SQLException; import java.util.Objects; public class H2DBManage extends DefaultDBManage implements DBManage { - - @Override - public String exportDatabaseData(Connection connection, String databaseName, String schemaName, String tableName) throws SQLException { - StringBuilder sqlBuilder = new StringBuilder(); - exportTableData(connection, tableName, sqlBuilder); - return sqlBuilder.toString(); - } @Override public String exportDatabase(Connection connection, String databaseName, String schemaName, boolean containData) throws SQLException { StringBuilder sqlBuilder = new StringBuilder(); @@ -45,28 +38,6 @@ public class H2DBManage extends DefaultDBManage implements DBManage { } } - private void exportTableData(Connection connection, String tableName, StringBuilder sqlBuilder) throws SQLException { - String sql = String.format("select * from %s", tableName); - try (ResultSet resultSet = connection.createStatement().executeQuery(sql)) { - ResultSetMetaData metaData = resultSet.getMetaData(); - while (resultSet.next()) { - sqlBuilder.append("INSERT INTO ").append(tableName).append(" VALUES ("); - for (int i = 1; i <= metaData.getColumnCount(); i++) { - String value = resultSet.getString(i); - if (Objects.isNull(value)) { - sqlBuilder.append("NULL"); - } else { - sqlBuilder.append("'").append(value).append("'"); - } - if (i < metaData.getColumnCount()) { - sqlBuilder.append(", "); - } - } - sqlBuilder.append(");\n"); - } - sqlBuilder.append("\n"); - } - } @Override public void connectDatabase(Connection connection, String database) { diff --git a/chat2db-server/chat2db-plugins/chat2db-mysql/src/main/java/ai/chat2db/plugin/mysql/MysqlDBManage.java b/chat2db-server/chat2db-plugins/chat2db-mysql/src/main/java/ai/chat2db/plugin/mysql/MysqlDBManage.java index b494d64e..cefa6f98 100644 --- a/chat2db-server/chat2db-plugins/chat2db-mysql/src/main/java/ai/chat2db/plugin/mysql/MysqlDBManage.java +++ b/chat2db-server/chat2db-plugins/chat2db-mysql/src/main/java/ai/chat2db/plugin/mysql/MysqlDBManage.java @@ -10,12 +10,6 @@ import java.sql.*; import java.util.Objects; public class MysqlDBManage extends DefaultDBManage implements DBManage { - @Override - public String exportDatabaseData(Connection connection, String databaseName, String schemaName, String tableName) throws SQLException { - StringBuilder sqlBuilder = new StringBuilder(); - exportTableData(connection, tableName, sqlBuilder); - return sqlBuilder.toString(); - } @Override public String exportDatabase(Connection connection, String databaseName, String schemaName, boolean containData) throws SQLException { StringBuilder sqlBuilder = new StringBuilder(); @@ -62,34 +56,12 @@ public class MysqlDBManage extends DefaultDBManage implements DBManage { sqlBuilder.append("DROP TABLE IF EXISTS ").append(format(tableName)).append(";").append("\n") .append(resultSet.getString("Create Table")).append(";").append("\n"); if (containData) { - exportTableData(connection, tableName, sqlBuilder); + exportTableData(connection, null,tableName, sqlBuilder); } } } } - private void exportTableData(Connection connection, String tableName, StringBuilder sqlBuilder) throws SQLException { - String sql = String.format("select * from %s", tableName); - try (ResultSet resultSet = connection.createStatement().executeQuery(sql)) { - ResultSetMetaData metaData = resultSet.getMetaData(); - while (resultSet.next()) { - sqlBuilder.append("INSERT INTO ").append(tableName).append(" VALUES ("); - for (int i = 1; i <= metaData.getColumnCount(); i++) { - String value = resultSet.getString(i); - if (Objects.isNull(value)) { - sqlBuilder.append("NULL"); - } else { - sqlBuilder.append("'").append(value).append("'"); - } - if (i < metaData.getColumnCount()) { - sqlBuilder.append(", "); - } - } - sqlBuilder.append(");\n"); - } - sqlBuilder.append("\n"); - } - } private void exportViews(Connection connection, String databaseName, StringBuilder sqlBuilder) throws SQLException { try (ResultSet resultSet = connection.getMetaData().getTables(databaseName, null, null, new String[]{"VIEW"})) { diff --git a/chat2db-server/chat2db-plugins/chat2db-postgresql/src/main/java/ai/chat2db/plugin/postgresql/PostgreSQLDBManage.java b/chat2db-server/chat2db-plugins/chat2db-postgresql/src/main/java/ai/chat2db/plugin/postgresql/PostgreSQLDBManage.java index 55b59c37..123e7128 100644 --- a/chat2db-server/chat2db-plugins/chat2db-postgresql/src/main/java/ai/chat2db/plugin/postgresql/PostgreSQLDBManage.java +++ b/chat2db-server/chat2db-plugins/chat2db-postgresql/src/main/java/ai/chat2db/plugin/postgresql/PostgreSQLDBManage.java @@ -15,12 +15,6 @@ import static ai.chat2db.plugin.postgresql.consts.SQLConst.*; public class PostgreSQLDBManage extends DefaultDBManage implements DBManage { - @Override - public String exportDatabaseData(Connection connection, String databaseName, String schemaName, String tableName) throws SQLException { - StringBuilder sqlBuilder = new StringBuilder(); - exportTableData(connection,schemaName, tableName, sqlBuilder); - return sqlBuilder.toString(); - } public String exportDatabase(Connection connection, String databaseName, String schemaName, boolean containData) throws SQLException { StringBuilder sqlBuilder = new StringBuilder(); exportTypes(connection, sqlBuilder); @@ -67,28 +61,6 @@ public class PostgreSQLDBManage extends DefaultDBManage implements DBManage { } } - private void exportTableData(Connection connection, String schemaName, String tableName, StringBuilder sqlBuilder) throws SQLException { - String sql =String.format("select * from %s.%s", schemaName,tableName); - try (ResultSet resultSet = connection.createStatement().executeQuery(sql)) { - ResultSetMetaData metaData = resultSet.getMetaData(); - while (resultSet.next()) { - sqlBuilder.append("INSERT INTO ").append(tableName).append(" VALUES ("); - for (int i = 1; i <= metaData.getColumnCount(); i++) { - String value = resultSet.getString(i); - if (Objects.isNull(value)) { - sqlBuilder.append("NULL"); - } else { - sqlBuilder.append("'").append(value).append("'"); - } - if (i < metaData.getColumnCount()) { - sqlBuilder.append(", "); - } - } - sqlBuilder.append(");\n"); - } - sqlBuilder.append("\n"); - } - } private void exportViews(Connection connection, String schemaName, StringBuilder sqlBuilder) throws SQLException { diff --git a/chat2db-server/chat2db-plugins/chat2db-sqlite/src/main/java/ai/chat2db/plugin/sqlite/SqliteDBManage.java b/chat2db-server/chat2db-plugins/chat2db-sqlite/src/main/java/ai/chat2db/plugin/sqlite/SqliteDBManage.java index 61c2ee96..da965926 100644 --- a/chat2db-server/chat2db-plugins/chat2db-sqlite/src/main/java/ai/chat2db/plugin/sqlite/SqliteDBManage.java +++ b/chat2db-server/chat2db-plugins/chat2db-sqlite/src/main/java/ai/chat2db/plugin/sqlite/SqliteDBManage.java @@ -5,44 +5,36 @@ import ai.chat2db.spi.jdbc.DefaultDBManage; import java.sql.Connection; import java.sql.ResultSet; -import java.sql.ResultSetMetaData; import java.sql.SQLException; -import java.util.Objects; public class SqliteDBManage extends DefaultDBManage implements DBManage { - @Override - public String exportDatabaseData(Connection connection, String databaseName, String schemaName, String tableName) throws SQLException { - StringBuilder sqlBuilder = new StringBuilder(); - exportTableData(connection, tableName, sqlBuilder); - return sqlBuilder.toString(); - } @Override public String exportDatabase(Connection connection, String databaseName, String schemaName, boolean containData) throws SQLException { StringBuilder sqlBuilder = new StringBuilder(); - exportTables(connection, databaseName, sqlBuilder, containData); + exportTables(connection, databaseName, schemaName,sqlBuilder, containData); exportViews(connection, databaseName, sqlBuilder); exportTriggers(connection, sqlBuilder); return sqlBuilder.toString(); } - private void exportTables(Connection connection, String databaseName, StringBuilder sqlBuilder, boolean containData) throws SQLException { + private void exportTables(Connection connection, String databaseName, String schemaName, StringBuilder sqlBuilder, boolean containData) throws SQLException { try (ResultSet resultSet = connection.getMetaData().getTables(databaseName, null, null, new String[]{"TABLE", "SYSTEM TABLE"})) { while (resultSet.next()) { - exportTable(connection, resultSet.getString("TABLE_NAME"), sqlBuilder, containData); + exportTable(connection,schemaName, resultSet.getString("TABLE_NAME"), sqlBuilder, containData); } } } - private void exportTable(Connection connection, String tableName, StringBuilder sqlBuilder, boolean containData) throws SQLException { + private void exportTable(Connection connection, String schemaName, String tableName, StringBuilder sqlBuilder, boolean containData) throws SQLException { String sql = String.format("SELECT sql FROM sqlite_master WHERE type='table' AND name='%s'", tableName); try (ResultSet resultSet = connection.createStatement().executeQuery(sql)) { if (resultSet.next()) { sqlBuilder.append("DROP TABLE IF EXISTS ").append(format(tableName)).append(";").append("\n") .append(resultSet.getString("sql")).append(";").append("\n"); if (containData) { - exportTableData(connection, tableName, sqlBuilder); + exportTableData(connection,schemaName, tableName, sqlBuilder); } } } @@ -52,30 +44,6 @@ public class SqliteDBManage extends DefaultDBManage implements DBManage { return "\""+tableName+"\""; } - - private void exportTableData(Connection connection, String tableName, StringBuilder sqlBuilder) throws SQLException { - String sql = String.format("select * from %s", tableName); - try (ResultSet resultSet = connection.createStatement().executeQuery(sql)) { - ResultSetMetaData metaData = resultSet.getMetaData(); - while (resultSet.next()) { - sqlBuilder.append("INSERT INTO ").append(tableName).append(" VALUES ("); - for (int i = 1; i <= metaData.getColumnCount(); i++) { - String value = resultSet.getString(i); - if (Objects.isNull(value)) { - sqlBuilder.append("NULL"); - } else { - sqlBuilder.append("'").append(value).append("'"); - } - if (i < metaData.getColumnCount()) { - sqlBuilder.append(", "); - } - } - sqlBuilder.append(");\n"); - } - sqlBuilder.append("\n"); - } - } - private void exportViews(Connection connection, String databaseName, StringBuilder sqlBuilder) throws SQLException { try (ResultSet resultSet = connection.getMetaData().getTables(databaseName, null, null, new String[]{"VIEW"})) { while (resultSet.next()) { diff --git a/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/data/export/strategy/ExportDBData2JsonStrategy.java b/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/data/export/strategy/ExportDBData2JsonStrategy.java index 971c23b5..f7bb25ae 100644 --- a/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/data/export/strategy/ExportDBData2JsonStrategy.java +++ b/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/data/export/strategy/ExportDBData2JsonStrategy.java @@ -1,6 +1,7 @@ package ai.chat2db.server.web.api.controller.rdb.data.export.strategy; import ai.chat2db.server.domain.api.enums.ExportFileSuffix; +import ai.chat2db.server.tools.base.excption.BusinessException; import com.fasterxml.jackson.databind.ObjectMapper; import java.io.ByteArrayOutputStream; @@ -49,7 +50,7 @@ public class ExportDBData2JsonStrategy extends ExportDBDataStrategy { String jsonString = objectMapper.writeValueAsString(data); writer.println(jsonString); } catch (IOException e) { - throw new RuntimeException(e); + throw new BusinessException(); } } } diff --git a/chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/jdbc/DefaultDBManage.java b/chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/jdbc/DefaultDBManage.java index 4c9d5378..dd54558b 100644 --- a/chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/jdbc/DefaultDBManage.java +++ b/chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/jdbc/DefaultDBManage.java @@ -1,7 +1,10 @@ package ai.chat2db.spi.jdbc; import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; import java.sql.SQLException; +import java.util.Objects; import ai.chat2db.server.tools.base.excption.BusinessException; import ai.chat2db.server.tools.common.exception.ConnectionException; @@ -142,9 +145,10 @@ public class DefaultDBManage implements DBManage { public String exportDatabase(Connection connection, String databaseName, String schemaName, boolean containData) throws SQLException { return null; } - @Override - public String exportDatabaseData(Connection connection, String databaseName, String schemaName,String tableName) throws SQLException { - return null; + public String exportDatabaseData(Connection connection, String databaseName, String schemaName, String tableName) throws SQLException { + StringBuilder sqlBuilder = new StringBuilder(); + exportTableData(connection, schemaName,tableName, sqlBuilder); + return sqlBuilder.toString(); } @Override @@ -152,4 +156,32 @@ public class DefaultDBManage implements DBManage { String sql = "DROP TABLE " + tableName; SQLExecutor.getInstance().execute(connection, sql, resultSet -> null); } + + public void exportTableData(Connection connection,String schemaName, String tableName, StringBuilder sqlBuilder) throws SQLException { + String sql; + if (Objects.isNull(schemaName)) { + sql = String.format("select * from %s", tableName); + }else{ + sql = String.format("select * from %s.%s",schemaName,tableName); + } + try (ResultSet resultSet = connection.createStatement().executeQuery(sql)) { + ResultSetMetaData metaData = resultSet.getMetaData(); + while (resultSet.next()) { + sqlBuilder.append("INSERT INTO ").append(tableName).append(" VALUES ("); + for (int i = 1; i <= metaData.getColumnCount(); i++) { + String value = resultSet.getString(i); + if (Objects.isNull(value)) { + sqlBuilder.append("NULL"); + } else { + sqlBuilder.append("'").append(value).append("'"); + } + if (i < metaData.getColumnCount()) { + sqlBuilder.append(", "); + } + } + sqlBuilder.append(");\n"); + } + sqlBuilder.append("\n"); + } + } } \ No newline at end of file