|
@@ -1391,20 +1391,29 @@ public class HanaOrderComponent {
|
|
|
int rows = this.bulkLoadFromInputStream(testSql, inputStream);
|
|
int rows = this.bulkLoadFromInputStream(testSql, inputStream);
|
|
|
long endTime = System.currentTimeMillis();
|
|
long endTime = System.currentTimeMillis();
|
|
|
log.info("importing salesOrder := {} rows data into mysql from {} and cost {} ms!", rows, filePath, (endTime - beginTime));
|
|
log.info("importing salesOrder := {} rows data into mysql from {} and cost {} ms!", rows, filePath, (endTime - beginTime));
|
|
|
|
|
+ }catch (Exception e) {
|
|
|
|
|
+ log.error("加载数据到临时表", e);
|
|
|
|
|
+ throw e; // 抛出异常让上层处理
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//删除旧表
|
|
//删除旧表
|
|
|
- try (Connection tempConn = getMysqlConnection();
|
|
|
|
|
- Statement tempStmt = tempConn.createStatement()) {
|
|
|
|
|
|
|
+ // 删除旧表使用同一个连接
|
|
|
|
|
+ try (Statement tempStmt = conn.createStatement()) {
|
|
|
tempStmt.execute("DROP TABLE IF EXISTS meta_hana_sales_order_old");
|
|
tempStmt.execute("DROP TABLE IF EXISTS meta_hana_sales_order_old");
|
|
|
log.info("成功删除旧表: meta_hana_sales_order_old");
|
|
log.info("成功删除旧表: meta_hana_sales_order_old");
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
log.error("删除旧表失败,表名: meta_hana_sales_order_old", e);
|
|
log.error("删除旧表失败,表名: meta_hana_sales_order_old", e);
|
|
|
|
|
+ throw e; // 抛出异常让上层处理
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
// 1. 先设置会话级锁等待超时为3秒
|
|
// 1. 先设置会话级锁等待超时为3秒
|
|
|
try (Statement timeOut = conn.createStatement()) {
|
|
try (Statement timeOut = conn.createStatement()) {
|
|
|
timeOut.execute("SET SESSION innodb_lock_wait_timeout = 3");
|
|
timeOut.execute("SET SESSION innodb_lock_wait_timeout = 3");
|
|
|
|
|
+ }catch (Exception e) {
|
|
|
|
|
+ log.error("先设置会话级锁等待超时为3秒", e);
|
|
|
|
|
+ throw e; // 抛出异常让上层处理
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 2. 执行RENAME并设置语句级超时(原子切换表(RENAME是原子操作))
|
|
// 2. 执行RENAME并设置语句级超时(原子切换表(RENAME是原子操作))
|
|
@@ -1412,6 +1421,9 @@ public class HanaOrderComponent {
|
|
|
renameTable.setQueryTimeout(3); // 语句执行超时3秒
|
|
renameTable.setQueryTimeout(3); // 语句执行超时3秒
|
|
|
renameTable.execute("RENAME TABLE meta_hana_sales_order TO meta_hana_sales_order_old, " +
|
|
renameTable.execute("RENAME TABLE meta_hana_sales_order TO meta_hana_sales_order_old, " +
|
|
|
"meta_hana_sales_order_temp TO meta_hana_sales_order");
|
|
"meta_hana_sales_order_temp TO meta_hana_sales_order");
|
|
|
|
|
+ }catch (Exception e) {
|
|
|
|
|
+ log.error("执行RENAME并设置语句级超时(原子切换表(RENAME是原子操作))", e);
|
|
|
|
|
+ throw e; // 抛出异常让上层处理
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 提交事务
|
|
// 提交事务
|
|
@@ -1519,20 +1531,28 @@ public class HanaOrderComponent {
|
|
|
int rows = this.bulkLoadFromInputStream(testSql, inputStream);
|
|
int rows = this.bulkLoadFromInputStream(testSql, inputStream);
|
|
|
long endTime = System.currentTimeMillis();
|
|
long endTime = System.currentTimeMillis();
|
|
|
log.info("importing selfDeliverOrder := {} rows data into mysql from {} and cost {} ms!", rows, filePath, (endTime - beginTime));
|
|
log.info("importing selfDeliverOrder := {} rows data into mysql from {} and cost {} ms!", rows, filePath, (endTime - beginTime));
|
|
|
|
|
+ }catch (Exception e) {
|
|
|
|
|
+ log.error("加载数据到临时表", e);
|
|
|
|
|
+ throw e; // 抛出异常让上层处理
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
//删除旧表
|
|
//删除旧表
|
|
|
- try (Connection tempConn = getMysqlConnection();
|
|
|
|
|
- Statement tempStmt = tempConn.createStatement()) {
|
|
|
|
|
|
|
+ try (Statement tempStmt = conn.createStatement()) {
|
|
|
tempStmt.execute("DROP TABLE IF EXISTS meta_hana_self_deliver_order_old");
|
|
tempStmt.execute("DROP TABLE IF EXISTS meta_hana_self_deliver_order_old");
|
|
|
log.info("成功删除旧表: meta_hana_self_deliver_order_old");
|
|
log.info("成功删除旧表: meta_hana_self_deliver_order_old");
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
log.error("删除旧表失败,表名: meta_hana_self_deliver_order_old", e);
|
|
log.error("删除旧表失败,表名: meta_hana_self_deliver_order_old", e);
|
|
|
|
|
+ throw e; // 抛出异常让上层处理
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
// 1. 先设置会话级锁等待超时为3秒
|
|
// 1. 先设置会话级锁等待超时为3秒
|
|
|
try (Statement timeOut = conn.createStatement()) {
|
|
try (Statement timeOut = conn.createStatement()) {
|
|
|
timeOut.execute("SET SESSION innodb_lock_wait_timeout = 3");
|
|
timeOut.execute("SET SESSION innodb_lock_wait_timeout = 3");
|
|
|
|
|
+ }catch (Exception e) {
|
|
|
|
|
+ log.error("先设置会话级锁等待超时为3秒", e);
|
|
|
|
|
+ throw e; // 抛出异常让上层处理
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 2. 执行RENAME并设置语句级超时(原子切换表(RENAME是原子操作))
|
|
// 2. 执行RENAME并设置语句级超时(原子切换表(RENAME是原子操作))
|
|
@@ -1540,6 +1560,9 @@ public class HanaOrderComponent {
|
|
|
renameTable.setQueryTimeout(3); // 语句执行超时3秒
|
|
renameTable.setQueryTimeout(3); // 语句执行超时3秒
|
|
|
renameTable.execute("RENAME TABLE meta_hana_self_deliver_order TO meta_hana_self_deliver_order_old, " +
|
|
renameTable.execute("RENAME TABLE meta_hana_self_deliver_order TO meta_hana_self_deliver_order_old, " +
|
|
|
"meta_hana_self_deliver_order_temp TO meta_hana_self_deliver_order");
|
|
"meta_hana_self_deliver_order_temp TO meta_hana_self_deliver_order");
|
|
|
|
|
+ }catch (Exception e) {
|
|
|
|
|
+ log.error("执行RENAME并设置语句级超时(原子切换表(RENAME是原子操作))", e);
|
|
|
|
|
+ throw e; // 抛出异常让上层处理
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1603,21 +1626,27 @@ public class HanaOrderComponent {
|
|
|
int rows = this.bulkLoadFromInputStream(testSql, inputStream);
|
|
int rows = this.bulkLoadFromInputStream(testSql, inputStream);
|
|
|
long endTime = System.currentTimeMillis();
|
|
long endTime = System.currentTimeMillis();
|
|
|
log.info("importing deliverOrder := {} rows data into mysql from {} and cost {} ms!", rows, filePath, (endTime - beginTime));
|
|
log.info("importing deliverOrder := {} rows data into mysql from {} and cost {} ms!", rows, filePath, (endTime - beginTime));
|
|
|
|
|
+ }catch (Exception e) {
|
|
|
|
|
+ log.error("加载数据到临时表", e);
|
|
|
|
|
+ throw e; // 抛出异常让上层处理
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//删除旧表
|
|
//删除旧表
|
|
|
- try (Connection tempConn = getMysqlConnection();
|
|
|
|
|
- Statement tempStmt = tempConn.createStatement()) {
|
|
|
|
|
|
|
+ try (Statement tempStmt = conn.createStatement()) {
|
|
|
tempStmt.execute("DROP TABLE IF EXISTS meta_hana_deliver_order_old");
|
|
tempStmt.execute("DROP TABLE IF EXISTS meta_hana_deliver_order_old");
|
|
|
log.info("成功删除旧表: meta_hana_deliver_order_old");
|
|
log.info("成功删除旧表: meta_hana_deliver_order_old");
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
log.error("删除旧表失败,表名: meta_hana_deliver_order_old", e);
|
|
log.error("删除旧表失败,表名: meta_hana_deliver_order_old", e);
|
|
|
|
|
+ throw e; // 抛出异常让上层处理
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
// 1. 先设置会话级锁等待超时为3秒
|
|
// 1. 先设置会话级锁等待超时为3秒
|
|
|
try (Statement timeOut = conn.createStatement()) {
|
|
try (Statement timeOut = conn.createStatement()) {
|
|
|
timeOut.execute("SET SESSION innodb_lock_wait_timeout = 3");
|
|
timeOut.execute("SET SESSION innodb_lock_wait_timeout = 3");
|
|
|
|
|
+ }catch (Exception e) {
|
|
|
|
|
+ log.error("先设置会话级锁等待超时为3秒", e);
|
|
|
|
|
+ throw e; // 抛出异常让上层处理
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 2. 执行RENAME并设置语句级超时(原子切换表(RENAME是原子操作))
|
|
// 2. 执行RENAME并设置语句级超时(原子切换表(RENAME是原子操作))
|
|
@@ -1625,6 +1654,9 @@ public class HanaOrderComponent {
|
|
|
renameTable.setQueryTimeout(3); // 语句执行超时3秒
|
|
renameTable.setQueryTimeout(3); // 语句执行超时3秒
|
|
|
renameTable.execute("RENAME TABLE meta_hana_deliver_order TO meta_hana_deliver_order_old, " +
|
|
renameTable.execute("RENAME TABLE meta_hana_deliver_order TO meta_hana_deliver_order_old, " +
|
|
|
"meta_hana_deliver_order_temp TO meta_hana_deliver_order");
|
|
"meta_hana_deliver_order_temp TO meta_hana_deliver_order");
|
|
|
|
|
+ }catch (Exception e) {
|
|
|
|
|
+ log.error("执行RENAME并设置语句级超时(原子切换表(RENAME是原子操作))", e);
|
|
|
|
|
+ throw e; // 抛出异常让上层处理
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|