فهرست منبع

feat: 更新发生异常时检查是否存在备份,如果存在备份则恢复

weijianghai 1 سال پیش
والد
کامیت
1c42b44c45
3فایلهای تغییر یافته به همراه23 افزوده شده و 35 حذف شده
  1. 9 14
      scripts/import.sh
  2. 1 1
      src/main/java/com/nokia/common/psql/PsqlUtil.java
  3. 13 20
      src/main/java/com/nokia/task/SyncTask.java

+ 9 - 14
scripts/import.sh

@@ -1,15 +1,10 @@
-#!/bin/expect
+#!/bin/bash
 
-set timeout 300
-set host [lindex $argv 0]
-set port [lindex $argv 1]
-set username [lindex $argv 2]
-set password [lindex $argv 3]
-set dbname [lindex $argv 4]
-set table [lindex $argv 5]
-set filename [lindex $argv 6]
-spawn psql -h ${host} -p ${port} -U ${username} -d ${dbname} -c "\\copy ${table} from ${filename} with csv"
-expect "Password" {
-  send "${password}\r"
-}
-expect eof
+export PGPASSWORD=$4
+host=$1
+port=$2
+username=$3
+dbname=$5
+table=$6
+filename=$7
+psql -h ${host} -p ${port} -U ${username} -d ${dbname} -c "\\copy ${table} from ${filename} with csv;"

+ 1 - 1
src/main/java/com/nokia/common/psql/PsqlUtil.java

@@ -37,7 +37,7 @@ public class PsqlUtil {
     public static void copyCsv(String script, String dbHost, Integer dbPort, String dbUsername, String dbPassword,
                                String dbName, String dbTable, String csv, Long minInsertCount)
             throws IOException, InterruptedException {
-        String command = "expect -f"
+        String command = "sh"
                 + " " + script
                 + " " + dbHost
                 + " " + dbPort

+ 13 - 20
src/main/java/com/nokia/task/SyncTask.java

@@ -3,8 +3,6 @@ package com.nokia.task;
 import com.jcraft.jsch.JSchException;
 import com.jcraft.jsch.SftpException;
 import com.nokia.common.exception.MyRuntimeException;
-import com.nokia.common.gpload.GploadUtil;
-import com.nokia.common.gpload.entity.GploadResult;
 import com.nokia.common.psql.PsqlUtil;
 import com.nokia.common.ssh.SSHUtil;
 import com.nokia.config.TaskConfig;
@@ -268,26 +266,21 @@ public class SyncTask {
      * 回滚
      */
     public void rollback() {
-        String sql = "drop table if exists sqmdb_rpt.acl_top_user";
+        String sql = "select exists (select from pg_tables where schemaname = 'sqmdb_rpt' and tablename = 'acl_top_user_bak')";
+        Boolean backupExists = jdbcTemplate.queryForObject(sql, Boolean.class);
         log.warn(sql);
         XxlJobHelper.log(sql);
-        jdbcTemplate.execute(sql);
-        sql = "alter table sqmdb_rpt.acl_top_user_bak rename to acl_top_user";
-        log.warn(sql);
-        XxlJobHelper.log(sql);
-        jdbcTemplate.execute(sql);
-    }
-
-    public void gpload() throws IOException {
-        String gploadCommand = "sh gpload/gpload.sh";
-        GploadResult gpload = GploadUtil.gpload(gploadCommand);
-        if (Boolean.TRUE.equals(gpload.getTaskStatus())) {
-            log.info("gpload完成: {}", gpload);
-            XxlJobHelper.log("gpload完成: {}", gpload);
-            // 删除文件
-            Files.deleteIfExists(Paths.get(taskConfig.getDistinctFilename()));
-        } else {
-            throw new MyRuntimeException("gpload失败: " + gpload.getMessage());
+        if (Boolean.TRUE.equals(backupExists)) {
+            sql = "truncate table sqmdb_rpt.acl_top_user";
+            log.warn(sql);
+            XxlJobHelper.log(sql);
+            jdbcTemplate.execute(sql);
+            sql = "insert into sqmdb_rpt.acl_top_user\n"
+                    + "(login_name, org_id, org_name, user_id, user_name, phone, employee_code, province_id, city_id, area_id)\n"
+                    + "select * from sqmdb_rpt.acl_top_user_bak";
+            log.warn(sql);
+            XxlJobHelper.log(sql);
+            jdbcTemplate.execute(sql);
         }
     }
 }