From 43597925f2b31af0b477c3ed43d1da422c658cf3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=BB=84=E6=B5=B7?= <10402852@qq.com>
Date: Mon, 24 Apr 2023 16:28:29 +0800
Subject: [PATCH] =?UTF-8?q?=E5=8F=98=E6=9B=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 4 +-
src/main/java/Tools/SyncXtData2022.java | 49 +++++++++++++++++++++----
2 files changed, 43 insertions(+), 10 deletions(-)
diff --git a/pom.xml b/pom.xml
index 1960b41..611dd5b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -122,9 +122,9 @@
- postgresql
+ org.postgresql
postgresql
- 8.2-504.jdbc3
+ 42.2.27
diff --git a/src/main/java/Tools/SyncXtData2022.java b/src/main/java/Tools/SyncXtData2022.java
index 9e24649..e160d1b 100644
--- a/src/main/java/Tools/SyncXtData2022.java
+++ b/src/main/java/Tools/SyncXtData2022.java
@@ -7,6 +7,7 @@ import com.dsideal.FengHuang.Util.CommonUtil;
import com.dsideal.FengHuang.Util.PkUtil;
import com.jfinal.kit.PathKit;
import com.jfinal.kit.PropKit;
+import com.jfinal.kit.StrKit;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;
@@ -15,7 +16,9 @@ import com.jfinal.plugin.druid.DruidPlugin;
import com.jfinal.plugin.redis.RedisPlugin;
import java.io.File;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
import java.util.UUID;
public class SyncXtData2022 {
@@ -42,14 +45,44 @@ public class SyncXtData2022 {
for (Record tableRecord : tableList) {
String tableName = tableRecord.getStr("tablename");
- List list = Db.findAll(tableName);
- int i = 0;
- for (Record record : list) {
- record.set("record_year", 2022);
- i++;
- //保存
- Db.use("target").save(tableName, record);
- System.out.println("正在处理表【" + tableName + "】,第" + i + "条数据,当前表共" + list.size() + "条。");
+ sql = "select a.attname as name from pg_class as c,pg_attribute as a where c.relname = '" + tableName + "' and a.attrelid = c.oid and a.attnum>0";
+ List colsListTarge = Db.use("target").find(sql);
+ List colsListSource = Db.use("source").find(sql);
+ Set targetSet = new HashSet<>();
+ for (Record rCol : colsListTarge) {
+ targetSet.add(rCol.getStr("name"));
+ }
+ Set sourceSet = new HashSet<>();
+ for (Record rCol : colsListSource) {
+ sourceSet.add(rCol.getStr("name"));
+ }
+
+ List list = Db.use("source").findAll(tableName);
+
+ int cnt = 0;
+ for (Record sourceRecord : list) {
+ cnt++;
+ //1、找出有用的列
+ Record rWrite = new Record();
+ for (int j = 0; j < sourceRecord.getColumnNames().length; j++) {
+ String colName = sourceRecord.getColumnNames()[j];
+ if (targetSet.contains(colName)) {
+ String value = sourceRecord.getStr(colName);
+ if (StrKit.isBlank(value)) value = "";
+ rWrite.set(colName, value);
+ }
+ }
+ //2、找出缺少的列
+ Set resSet = new HashSet<>();
+ resSet.addAll(targetSet);
+ resSet.removeAll(sourceSet);
+ for (String str : resSet) {
+ rWrite.set(str, "");//加上默认值
+ }
+ rWrite.set("recordyear", 2022);
+ //3、保存
+ Db.use("target").save(tableName, "id", rWrite);
+ System.out.println("正在处理表【" + tableName + "】,第" + cnt + "条数据,当前表共" + list.size() + "条。");
}
}
CommonUtil.printf("恭喜,所有导入工作成功完成!");