mirror of
https://github.com/CodePhiliaX/Chat2DB.git
synced 2025-08-03 06:17:03 +08:00
remove redundant code and optimize exception throwing
This commit is contained in:
@ -10,16 +10,10 @@ import java.sql.*;
|
|||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
public class ClickHouseDBManage extends DefaultDBManage implements DBManage {
|
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
|
@Override
|
||||||
public String exportDatabase(Connection connection, String databaseName, String schemaName, boolean containData) throws SQLException {
|
public String exportDatabase(Connection connection, String databaseName, String schemaName, boolean containData) throws SQLException {
|
||||||
StringBuilder sqlBuilder = new StringBuilder();
|
StringBuilder sqlBuilder = new StringBuilder();
|
||||||
exportTablesOrViewsOrDictionaries(connection, sqlBuilder, databaseName, containData);
|
exportTablesOrViewsOrDictionaries(connection, sqlBuilder, databaseName, schemaName,containData);
|
||||||
exportFunctions(connection, sqlBuilder);
|
exportFunctions(connection, sqlBuilder);
|
||||||
return sqlBuilder.toString();
|
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);
|
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)) {
|
try (Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery(sql)) {
|
||||||
while (resultSet.next()) {
|
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)
|
sqlBuilder.append("DROP TABLE IF EXISTS ").append(databaseName).append(".").append(tableOrViewName)
|
||||||
.append(";").append("\n").append(ddl).append(";").append("\n");
|
.append(";").append("\n").append(ddl).append(";").append("\n");
|
||||||
if (containData && dataFlag) {
|
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
|
@Override
|
||||||
public Connection getConnection(ConnectInfo connectInfo) {
|
public Connection getConnection(ConnectInfo connectInfo) {
|
||||||
String url = setDatabaseInJdbcUrl(connectInfo);
|
String url = setDatabaseInJdbcUrl(connectInfo);
|
||||||
|
@ -11,28 +11,20 @@ import org.apache.commons.lang3.StringUtils;
|
|||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.ResultSetMetaData;
|
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
public class DB2DBManage extends DefaultDBManage implements DBManage {
|
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
|
@Override
|
||||||
public String exportDatabase(Connection connection, String databaseName, String schemaName, boolean containData) throws SQLException {
|
public String exportDatabase(Connection connection, String databaseName, String schemaName, boolean containData) throws SQLException {
|
||||||
StringBuilder sqlBuilder = new StringBuilder();
|
StringBuilder sqlBuilder = new StringBuilder();
|
||||||
exportTables(connection, schemaName, sqlBuilder, containData);
|
exportTables(connection, schemaName, sqlBuilder, containData);
|
||||||
exportViews(connection, schemaName, sqlBuilder);
|
exportViews(connection, schemaName, sqlBuilder);
|
||||||
exportProceduresAndFunctions(connection,schemaName, sqlBuilder);
|
exportProceduresAndFunctions(connection, schemaName, sqlBuilder);
|
||||||
exportTriggers(connection, schemaName,sqlBuilder);
|
exportTriggers(connection, schemaName, sqlBuilder);
|
||||||
return sqlBuilder.toString();
|
return sqlBuilder.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void exportTables(Connection connection, String schemaName, StringBuilder sqlBuilder, boolean containData) throws SQLException {
|
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"})) {
|
try (ResultSet resultSet = connection.getMetaData().getTables(null, schemaName, null, new String[]{"TABLE", "SYSTEM TABLE"})) {
|
||||||
while (resultSet.next()) {
|
while (resultSet.next()) {
|
||||||
@ -53,34 +45,12 @@ public class DB2DBManage extends DefaultDBManage implements DBManage {
|
|||||||
if (resultSet.next()) {
|
if (resultSet.next()) {
|
||||||
sqlBuilder.append(resultSet.getString("sql")).append("\n");
|
sqlBuilder.append(resultSet.getString("sql")).append("\n");
|
||||||
if (containData) {
|
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 {
|
private void exportViews(Connection connection, String schemaName, StringBuilder sqlBuilder) throws SQLException {
|
||||||
String sql = String.format("select TEXT from syscat.views where VIEWSCHEMA='%s';", schemaName);
|
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 {
|
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)) {
|
try (ResultSet resultSet = connection.createStatement().executeQuery(sql)) {
|
||||||
while (resultSet.next()) {
|
while (resultSet.next()) {
|
||||||
String ddl = resultSet.getString("TEXT");
|
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 {
|
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)) {
|
try (ResultSet resultSet = connection.createStatement().executeQuery(sql)) {
|
||||||
while (resultSet.next()) {
|
while (resultSet.next()) {
|
||||||
String ddl = resultSet.getString("TEXT");
|
String ddl = resultSet.getString("TEXT");
|
||||||
@ -127,9 +96,10 @@ public class DB2DBManage extends DefaultDBManage implements DBManage {
|
|||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dropTable(Connection connection, String databaseName, String schemaName, String tableName) {
|
public void dropTable(Connection connection, String databaseName, String schemaName, String tableName) {
|
||||||
String sql = "DROP TABLE " + tableName;
|
String sql = "DROP TABLE " + tableName;
|
||||||
SQLExecutor.getInstance().execute(connection,sql, resultSet -> null);
|
SQLExecutor.getInstance().execute(connection, sql, resultSet -> null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,13 +22,6 @@ public class DMDBManage extends DefaultDBManage implements DBManage {
|
|||||||
private static String TRIGGER_SQL
|
private static String TRIGGER_SQL
|
||||||
= "SELECT OWNER, TRIGGER_NAME, TABLE_OWNER, TABLE_NAME, TRIGGERING_TYPE, TRIGGERING_EVENT, STATUS, TRIGGER_BODY "
|
= "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'";
|
+ "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
|
@Override
|
||||||
public String exportDatabase(Connection connection, String databaseName, String schemaName, boolean containData) throws SQLException {
|
public String exportDatabase(Connection connection, String databaseName, String schemaName, boolean containData) throws SQLException {
|
||||||
StringBuilder sqlBuilder = new StringBuilder();
|
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 {
|
private void exportViews(Connection connection, String schemaName, StringBuilder sqlBuilder) throws SQLException {
|
||||||
try (ResultSet resultSet = connection.getMetaData().getTables(null, schemaName, null, new String[]{"VIEW"})) {
|
try (ResultSet resultSet = connection.getMetaData().getTables(null, schemaName, null, new String[]{"VIEW"})) {
|
||||||
while (resultSet.next()) {
|
while (resultSet.next()) {
|
||||||
|
@ -15,13 +15,6 @@ import java.sql.SQLException;
|
|||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
public class H2DBManage extends DefaultDBManage implements DBManage {
|
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
|
@Override
|
||||||
public String exportDatabase(Connection connection, String databaseName, String schemaName, boolean containData) throws SQLException {
|
public String exportDatabase(Connection connection, String databaseName, String schemaName, boolean containData) throws SQLException {
|
||||||
StringBuilder sqlBuilder = new StringBuilder();
|
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
|
@Override
|
||||||
public void connectDatabase(Connection connection, String database) {
|
public void connectDatabase(Connection connection, String database) {
|
||||||
|
@ -10,12 +10,6 @@ import java.sql.*;
|
|||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
public class MysqlDBManage extends DefaultDBManage implements DBManage {
|
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
|
@Override
|
||||||
public String exportDatabase(Connection connection, String databaseName, String schemaName, boolean containData) throws SQLException {
|
public String exportDatabase(Connection connection, String databaseName, String schemaName, boolean containData) throws SQLException {
|
||||||
StringBuilder sqlBuilder = new StringBuilder();
|
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")
|
sqlBuilder.append("DROP TABLE IF EXISTS ").append(format(tableName)).append(";").append("\n")
|
||||||
.append(resultSet.getString("Create Table")).append(";").append("\n");
|
.append(resultSet.getString("Create Table")).append(";").append("\n");
|
||||||
if (containData) {
|
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 {
|
private void exportViews(Connection connection, String databaseName, StringBuilder sqlBuilder) throws SQLException {
|
||||||
try (ResultSet resultSet = connection.getMetaData().getTables(databaseName, null, null, new String[]{"VIEW"})) {
|
try (ResultSet resultSet = connection.getMetaData().getTables(databaseName, null, null, new String[]{"VIEW"})) {
|
||||||
|
@ -15,12 +15,6 @@ import static ai.chat2db.plugin.postgresql.consts.SQLConst.*;
|
|||||||
|
|
||||||
public class PostgreSQLDBManage extends DefaultDBManage implements DBManage {
|
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 {
|
public String exportDatabase(Connection connection, String databaseName, String schemaName, boolean containData) throws SQLException {
|
||||||
StringBuilder sqlBuilder = new StringBuilder();
|
StringBuilder sqlBuilder = new StringBuilder();
|
||||||
exportTypes(connection, sqlBuilder);
|
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 {
|
private void exportViews(Connection connection, String schemaName, StringBuilder sqlBuilder) throws SQLException {
|
||||||
|
@ -5,44 +5,36 @@ import ai.chat2db.spi.jdbc.DefaultDBManage;
|
|||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.ResultSetMetaData;
|
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
public class SqliteDBManage extends DefaultDBManage implements DBManage {
|
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
|
@Override
|
||||||
public String exportDatabase(Connection connection, String databaseName, String schemaName, boolean containData) throws SQLException {
|
public String exportDatabase(Connection connection, String databaseName, String schemaName, boolean containData) throws SQLException {
|
||||||
StringBuilder sqlBuilder = new StringBuilder();
|
StringBuilder sqlBuilder = new StringBuilder();
|
||||||
exportTables(connection, databaseName, sqlBuilder, containData);
|
exportTables(connection, databaseName, schemaName,sqlBuilder, containData);
|
||||||
exportViews(connection, databaseName, sqlBuilder);
|
exportViews(connection, databaseName, sqlBuilder);
|
||||||
exportTriggers(connection, sqlBuilder);
|
exportTriggers(connection, sqlBuilder);
|
||||||
return sqlBuilder.toString();
|
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"})) {
|
try (ResultSet resultSet = connection.getMetaData().getTables(databaseName, null, null, new String[]{"TABLE", "SYSTEM TABLE"})) {
|
||||||
while (resultSet.next()) {
|
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);
|
String sql = String.format("SELECT sql FROM sqlite_master WHERE type='table' AND name='%s'", tableName);
|
||||||
try (ResultSet resultSet = connection.createStatement().executeQuery(sql)) {
|
try (ResultSet resultSet = connection.createStatement().executeQuery(sql)) {
|
||||||
if (resultSet.next()) {
|
if (resultSet.next()) {
|
||||||
sqlBuilder.append("DROP TABLE IF EXISTS ").append(format(tableName)).append(";").append("\n")
|
sqlBuilder.append("DROP TABLE IF EXISTS ").append(format(tableName)).append(";").append("\n")
|
||||||
.append(resultSet.getString("sql")).append(";").append("\n");
|
.append(resultSet.getString("sql")).append(";").append("\n");
|
||||||
if (containData) {
|
if (containData) {
|
||||||
exportTableData(connection, tableName, sqlBuilder);
|
exportTableData(connection,schemaName, tableName, sqlBuilder);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -52,30 +44,6 @@ public class SqliteDBManage extends DefaultDBManage implements DBManage {
|
|||||||
return "\""+tableName+"\"";
|
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 {
|
private void exportViews(Connection connection, String databaseName, StringBuilder sqlBuilder) throws SQLException {
|
||||||
try (ResultSet resultSet = connection.getMetaData().getTables(databaseName, null, null, new String[]{"VIEW"})) {
|
try (ResultSet resultSet = connection.getMetaData().getTables(databaseName, null, null, new String[]{"VIEW"})) {
|
||||||
while (resultSet.next()) {
|
while (resultSet.next()) {
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package ai.chat2db.server.web.api.controller.rdb.data.export.strategy;
|
package ai.chat2db.server.web.api.controller.rdb.data.export.strategy;
|
||||||
|
|
||||||
import ai.chat2db.server.domain.api.enums.ExportFileSuffix;
|
import ai.chat2db.server.domain.api.enums.ExportFileSuffix;
|
||||||
|
import ai.chat2db.server.tools.base.excption.BusinessException;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
@ -49,7 +50,7 @@ public class ExportDBData2JsonStrategy extends ExportDBDataStrategy {
|
|||||||
String jsonString = objectMapper.writeValueAsString(data);
|
String jsonString = objectMapper.writeValueAsString(data);
|
||||||
writer.println(jsonString);
|
writer.println(jsonString);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
throw new RuntimeException(e);
|
throw new BusinessException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,10 @@
|
|||||||
package ai.chat2db.spi.jdbc;
|
package ai.chat2db.spi.jdbc;
|
||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.ResultSetMetaData;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
import ai.chat2db.server.tools.base.excption.BusinessException;
|
import ai.chat2db.server.tools.base.excption.BusinessException;
|
||||||
import ai.chat2db.server.tools.common.exception.ConnectionException;
|
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 {
|
public String exportDatabase(Connection connection, String databaseName, String schemaName, boolean containData) throws SQLException {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@Override
|
public String exportDatabaseData(Connection connection, String databaseName, String schemaName, String tableName) throws SQLException {
|
||||||
public String exportDatabaseData(Connection connection, String databaseName, String schemaName,String tableName) throws SQLException {
|
StringBuilder sqlBuilder = new StringBuilder();
|
||||||
return null;
|
exportTableData(connection, schemaName,tableName, sqlBuilder);
|
||||||
|
return sqlBuilder.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -152,4 +156,32 @@ public class DefaultDBManage implements DBManage {
|
|||||||
String sql = "DROP TABLE " + tableName;
|
String sql = "DROP TABLE " + tableName;
|
||||||
SQLExecutor.getInstance().execute(connection, sql, resultSet -> null);
|
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");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user