From 95a33cbd258e781079186a0406d0a44c01aa1ccf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=BE=E6=96=87=E8=B6=85=20Reid=20Zeng?= Date: Wed, 6 Dec 2023 10:12:41 +0800 Subject: [PATCH] fix h2 sql error --- note.txt | 1 - src/main/java/com/zwc/sqldataprocessor/SqlExecutor.java | 7 +++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/note.txt b/note.txt index a1cdcab..0bd9eef 100644 --- a/note.txt +++ b/note.txt @@ -1,7 +1,6 @@ 待开发功能: 针对常见的错误, 直接在控制台显示具体的错误, 不需要打印调用栈 子查询模式下, 检查子查询的长度(只有第一个select才需要指定列名称, 后续select不需要指定列名称) - 去掉h2数据库的支持? 代码重构: Sql, 根据不同的语句类型, 拆分成不同的子类. diff --git a/src/main/java/com/zwc/sqldataprocessor/SqlExecutor.java b/src/main/java/com/zwc/sqldataprocessor/SqlExecutor.java index ddd9bb1..1fccbe6 100644 --- a/src/main/java/com/zwc/sqldataprocessor/SqlExecutor.java +++ b/src/main/java/com/zwc/sqldataprocessor/SqlExecutor.java @@ -159,7 +159,7 @@ static String renderSql(String sql, Map tables, String databas execRawSql(createTempTableSql, databaseName); // 分批导入数据 - List dataLists = table.split(10000); + List dataLists = table.split(1000); for (DataList dataList : dataLists) { String dataInsertSql = "insert into " + tempTableName + " "; dataInsertSql += renderSelectSql(dataList, databaseName); @@ -287,7 +287,7 @@ static String renderSelectSql(List rowValues, DataList table) { selectColumnFormat = "%s as `%s`"; } else { value = value.replace("\\", "\\\\"); - value = value.replace("'", "\\'"); + value = value.replace("'", "''"); selectColumnFormat = "'%s' as `%s`"; } } @@ -354,8 +354,7 @@ static String renderValueClause(List rowValues, DataList table) { if (value == null) { values.add(null); } else { - value = value.replace("\\", "\\\\"); - value = value.replace("'", "\\'"); + value = value.replace("'", "''"); values.add("'" + value + "'"); } }