Skip to content

Commit 5d80e38

Browse files
committed
batch export
1 parent 8edfa68 commit 5d80e38

5 files changed

Lines changed: 37 additions & 14 deletions

File tree

chat2db-server/chat2db-server-tools/chat2db-server-tools-common/pom.xml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,6 @@
1818
<groupId>ai.chat2db</groupId>
1919
<artifactId>chat2db-server-tools-base</artifactId>
2020
</dependency>
21-
<dependency>
22-
<groupId>org.apache.tika</groupId>
23-
<artifactId>tika-core</artifactId>
24-
<version>2.7.0</version>
25-
</dependency>
2621
<dependency>
2722
<groupId>org.apache.commons</groupId>
2823
<artifactId>commons-lang3</artifactId>

chat2db-server/chat2db-spi/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,11 @@
9090
<artifactId>ob-sql-parser</artifactId>
9191
<version>1.2.1</version>
9292
</dependency>
93+
<dependency>
94+
<groupId>org.apache.tika</groupId>
95+
<artifactId>tika-core</artifactId>
96+
<version>2.7.0</version>
97+
</dependency>
9398
</dependencies>
9499
<build>
95100
<plugins>

chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/SqlBuilder.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,17 @@ public interface SqlBuilder<T> {
9494
*/
9595
String getTableDmlSql(T table, String type);
9696

97+
/**
98+
*
99+
* @param databaseName
100+
* @param schemaName
101+
* @param tableName
102+
* @return
103+
*/
97104
String buildTableQuerySql(String databaseName, String schemaName, String tableName);
98105

106+
107+
99108
String buildSingleInsertSql(String databaseName, String schemaName, String tableName, List<String> columnList, List<String> valueList);
100109

101110
String buildMultiInsertSql(String databaseName, String schemaName, String tableName, List<String> columnList, List<List<String>> valueLists);

chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/model/AsyncContext.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,15 @@
44
import lombok.Builder;
55
import lombok.Data;
66
import lombok.NoArgsConstructor;
7+
import lombok.experimental.SuperBuilder;
78

89
import java.io.PrintWriter;
910
import java.util.function.Consumer;
1011

1112
@Data
1213
@AllArgsConstructor
1314
@NoArgsConstructor
14-
@Builder
15+
@SuperBuilder
1516
public class AsyncContext {
1617

1718
private PrintWriter writer;
@@ -39,14 +40,20 @@ public void error(String message) {
3940
}
4041

4142
public void finish() {
43+
if (writer != null) {
44+
writer.flush();
45+
writer.close();
46+
}
4247
if (call != null) {
4348
call.finish();
4449
}
50+
4551
}
4652

4753
public void write(String message) {
4854
if (writer != null) {
4955
writer.write(message);
5056
}
5157
}
58+
5259
}

chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/sql/SQLExecutor.java

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,6 @@
11
package ai.chat2db.spi.sql;
22

3-
import java.sql.Connection;
4-
import java.sql.DatabaseMetaData;
5-
import java.sql.ResultSet;
6-
import java.sql.ResultSetMetaData;
7-
import java.sql.SQLException;
8-
import java.sql.Statement;
3+
import java.sql.*;
94
import java.util.*;
105
import java.util.function.Consumer;
116
import java.util.stream.Collectors;
@@ -253,7 +248,7 @@ private List<List<String>> generateDataList(ResultSet rs, int col, int chat2dbAu
253248
continue;
254249
}
255250
ValueProcessor valueProcessor = Chat2DBContext.getMetaData().getValueProcessor();
256-
row.add(valueProcessor.getJdbcValue(new JDBCDataValue(rs, rs.getMetaData(), i,false)));
251+
row.add(valueProcessor.getJdbcValue(new JDBCDataValue(rs, rs.getMetaData(), i, false)));
257252
}
258253
if (count != null && count > 0 && rowCount++ >= count) {
259254
break;
@@ -497,7 +492,7 @@ public String getDbVersion(Connection connection) {
497492

498493
@Override
499494
public List<ExecuteResult> execute(Command command) {
500-
if(StringUtils.isBlank(command.getScript())){
495+
if (StringUtils.isBlank(command.getScript())) {
501496
return Collections.emptyList();
502497
}
503498
// parse sql
@@ -646,4 +641,16 @@ public void execute(Connection connection, String sql, int batchSize, ResultSetC
646641
throw new RuntimeException(e);
647642
}
648643
}
644+
645+
public void executeBatchInsert(Connection connection, List<String> sqlCacheList) {
646+
try (Statement stmt = connection.createStatement()) {
647+
for (String sql : sqlCacheList) {
648+
stmt.addBatch(sql);
649+
}
650+
stmt.executeBatch();
651+
stmt.clearBatch();
652+
} catch (SQLException e) {
653+
throw new RuntimeException(e);
654+
}
655+
}
649656
}

0 commit comments

Comments
 (0)