From 37300b72a1c890d54f9903caf6eb44b9cb50d61b Mon Sep 17 00:00:00 2001
From: linwei <872216696@qq.com>
Date: Mon, 09 Feb 2026 09:52:34 +0800
Subject: [PATCH] init
---
src/main/java/cn/net/communion/dbdatasync/dbhelper/impl/PostgreSql.java | 84 ++++++++++++++++++++++++++++++++++++++++++
1 files changed, 84 insertions(+), 0 deletions(-)
diff --git a/src/main/java/cn/net/communion/dbdatasync/dbhelper/impl/PostgreSql.java b/src/main/java/cn/net/communion/dbdatasync/dbhelper/impl/PostgreSql.java
new file mode 100644
index 0000000..4940e46
--- /dev/null
+++ b/src/main/java/cn/net/communion/dbdatasync/dbhelper/impl/PostgreSql.java
@@ -0,0 +1,84 @@
+package cn.net.communion.dbdatasync.dbhelper.impl;
+
+import cn.net.communion.dbdatasync.dbhelper.DbHelper;
+import cn.net.communion.dbdatasync.entity.JobInfo;
+import org.apache.log4j.Logger;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.List;
+
+public class PostgreSql implements DbHelper {
+ private Logger logger = Logger.getLogger(PostgreSql.class);
+
+ @Override
+ public String assembleSQL(String srcSql, Connection conn, JobInfo jobInfo) throws SQLException {
+ String[] fields = jobInfo.getDestTableFields().split(",");
+ String destTable = jobInfo.getDestTable();
+
+ PreparedStatement pst = conn.prepareStatement(srcSql);
+ ResultSet rs = pst.executeQuery();
+ StringBuilder sql = new StringBuilder();
+ sql.append("INSERT INTO ").append(destTable).append(" (").append(jobInfo.getDestTableFields()).append(") VALUES ");
+
+ long count = 0;
+ while (rs.next()) {
+ sql.append("(");
+ for (int index = 0; index < fields.length; index++) {
+ String value = rs.getString(fields[index]);
+ if (value == null) {
+ sql.append("NULL"); // 显式处理 NULL 值
+ } else {
+ sql.append("'").append(value).append("'"); // 字符串值加引号
+ }
+ if (index < fields.length - 1) {
+ sql.append(", ");
+ }
+ }
+ sql.append("),");
+ count++;
+ }
+
+ if (rs != null) {
+ rs.close();
+ }
+ if (pst != null) {
+ pst.close();
+ }
+
+ if (count > 0) {
+ sql = new StringBuilder(sql.substring(0, sql.length() - 1)); // 删除最后一个逗号
+ return sql.toString();
+ }
+ return null;
+ }
+
+
+
+ @Override
+ public void executeSQL(String sql, Connection conn) throws SQLException {
+ logger.debug("Executing SQL: " + sql);
+ try (PreparedStatement pst = conn.prepareStatement(sql)) {
+ pst.execute();
+ conn.commit();
+ }
+ }
+
+ // 辅助方法:设置参数
+ private void setParameters(PreparedStatement pst, List<Object> params) throws SQLException {
+ for (int i = 0; i < params.size(); i++) {
+ pst.setObject(i + 1, params.get(i));
+ }
+ }
+
+ // 辅助方法:序列化 SQL 和参数
+ private String serializeSqlWithParams(List<String> sqlStatements, List<List<Object>> paramLists) {
+ StringBuilder result = new StringBuilder();
+ for (int i = 0; i < sqlStatements.size(); i++) {
+ result.append(sqlStatements.get(i)).append("; ");
+ }
+ return result.toString();
+ }
+}
--
Gitblit v1.9.3