export info

This commit is contained in:
SwallowGG
2024-06-26 16:37:41 +08:00
parent 8691c1955f
commit 028c3ec4ac
5 changed files with 22 additions and 4 deletions

View File

@ -6,6 +6,7 @@ import ai.chat2db.spi.model.AsyncContext;
import ai.chat2db.spi.model.Procedure; import ai.chat2db.spi.model.Procedure;
import ai.chat2db.spi.sql.SQLExecutor; import ai.chat2db.spi.sql.SQLExecutor;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import java.sql.Connection; import java.sql.Connection;
@ -13,6 +14,7 @@ import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.Date; import java.util.Date;
@Slf4j
public class MysqlDBManage extends DefaultDBManage implements DBManage { public class MysqlDBManage extends DefaultDBManage implements DBManage {
@Override @Override
public void exportDatabase(Connection connection, String databaseName, String schemaName, AsyncContext asyncContext) throws SQLException { public void exportDatabase(Connection connection, String databaseName, String schemaName, AsyncContext asyncContext) throws SQLException {
@ -52,13 +54,14 @@ public class MysqlDBManage extends DefaultDBManage implements DBManage {
} }
private void exportTables(Connection connection, String databaseName, String schemaName, AsyncContext asyncContext) throws SQLException { private void exportTables(Connection connection, String databaseName, String schemaName, AsyncContext asyncContext) throws SQLException {
asyncContext.write("SET FOREIGN_KEY_CHECKS=0;"); asyncContext.write("SET FOREIGN_KEY_CHECKS=0;\n");
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()) {
String tableName = resultSet.getString("TABLE_NAME"); String tableName = resultSet.getString("TABLE_NAME");
exportTable(connection, databaseName, schemaName, tableName, asyncContext); exportTable(connection, databaseName, schemaName, tableName, asyncContext);
} }
} }
asyncContext.write("SET FOREIGN_KEY_CHECKS=1;");
} }
@ -76,6 +79,9 @@ public class MysqlDBManage extends DefaultDBManage implements DBManage {
exportTableData(connection, databaseName, schemaName, tableName, asyncContext); exportTableData(connection, databaseName, schemaName, tableName, asyncContext);
} }
} }
}catch (Exception e){
log.error("export table error", e);
asyncContext.getCall().error(String.format("export table %s error:%s", tableName,e.getMessage()));
} }
} }

View File

@ -4,6 +4,7 @@ import java.sql.Connection;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.concurrent.CountDownLatch; import java.util.concurrent.CountDownLatch;
import java.util.function.Consumer; import java.util.function.Consumer;
@ -195,6 +196,11 @@ public class DatabaseServiceImpl implements DatabaseService {
} }
@Override
public void update(Map<String, Object> map) {
}
@Override @Override
public void finish() { public void finish() {

View File

@ -192,6 +192,7 @@ public class DefaultDBManage implements DBManage {
public void exportTableData(Connection connection, String databaseName, String schemaName, String tableName, AsyncContext asyncContext) { public void exportTableData(Connection connection, String databaseName, String schemaName, String tableName, AsyncContext asyncContext) {
SqlBuilder sqlBuilder = Chat2DBContext.getSqlBuilder(); SqlBuilder sqlBuilder = Chat2DBContext.getSqlBuilder();
String tableQuerySql = sqlBuilder.buildTableQuerySql(databaseName, schemaName, tableName); String tableQuerySql = sqlBuilder.buildTableQuerySql(databaseName, schemaName, tableName);
asyncContext.info("export table data sql: " + tableQuerySql);
SQLExecutor.getInstance().execute(connection, tableQuerySql, 1000, resultSet -> { SQLExecutor.getInstance().execute(connection, tableQuerySql, 1000, resultSet -> {
ResultSetMetaData metaData = resultSet.getMetaData(); ResultSetMetaData metaData = resultSet.getMetaData();
List<String> columnList = ResultSetUtils.getRsHeader(resultSet); List<String> columnList = ResultSetUtils.getRsHeader(resultSet);

View File

@ -1,5 +1,7 @@
package ai.chat2db.spi.model; package ai.chat2db.spi.model;
import java.util.Map;
public interface AsyncCall { public interface AsyncCall {
@ -12,6 +14,9 @@ public interface AsyncCall {
void error(String message); void error(String message);
void update(Map<String,Object> map);
void finish(); void finish();
} }

View File

@ -15,11 +15,11 @@ import java.util.function.Consumer;
@SuperBuilder @SuperBuilder
public class AsyncContext { public class AsyncContext {
private PrintWriter writer; protected PrintWriter writer;
private boolean containsData; protected boolean containsData;
private AsyncCall call; protected AsyncCall call;
public void setProgress(Integer progress) { public void setProgress(Integer progress) {
if (call != null) { if (call != null) {