main
黄海 2 years ago
parent 793c244f69
commit 43597925f2

@ -122,9 +122,9 @@
</dependency>
<!--引用postrgesql-->
<dependency>
<groupId>postgresql</groupId>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>8.2-504.jdbc3</version>
<version>42.2.27</version>
</dependency>
<!--引用poi-->

@ -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<Record> 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<Record> colsListTarge = Db.use("target").find(sql);
List<Record> colsListSource = Db.use("source").find(sql);
Set<String> targetSet = new HashSet<>();
for (Record rCol : colsListTarge) {
targetSet.add(rCol.getStr("name"));
}
Set<String> sourceSet = new HashSet<>();
for (Record rCol : colsListSource) {
sourceSet.add(rCol.getStr("name"));
}
List<Record> 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<String> 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("恭喜,所有导入工作成功完成!");

Loading…
Cancel
Save