From 447b83515ae498f46e9d959e7c07f733647fdf06 Mon Sep 17 00:00:00 2001
From: linwei <872216696@qq.com>
Date: Mon, 09 Feb 2026 10:00:24 +0800
Subject: [PATCH] init
---
src/main/java/cn/net/communion/dbdatasync/dbhelper/impl/PostgreSql.java | 46 +++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 45 insertions(+), 1 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
index 4940e46..b900236 100644
--- a/src/main/java/cn/net/communion/dbdatasync/dbhelper/impl/PostgreSql.java
+++ b/src/main/java/cn/net/communion/dbdatasync/dbhelper/impl/PostgreSql.java
@@ -27,9 +27,14 @@
while (rs.next()) {
sql.append("(");
for (int index = 0; index < fields.length; index++) {
- String value = rs.getString(fields[index]);
+ String fieldName = fields[index].trim();
+ String value = rs.getString(fieldName);
if (value == null) {
sql.append("NULL"); // 显式处理 NULL 值
+ } else if (isGeometryField(fieldName)) {
+ // 处理几何类型字段,使用 ST_GeomFromText 函数
+ logger.debug("Processing geometry field: " + fieldName + " with value: " + value);
+ sql.append(handleGeometryData(value));
} else {
sql.append("'").append(value).append("'"); // 字符串值加引号
}
@@ -55,6 +60,45 @@
return null;
}
+ /**
+ * 判断是否为几何类型字段
+ *
+ * @param fieldName 字段名
+ * @return 是否为几何类型字段
+ */
+ private boolean isGeometryField(String fieldName) {
+ // 常见的几何类型字段名
+ return fieldName.equalsIgnoreCase("geom") ||
+ fieldName.contains("geometry") ||
+ fieldName.contains("geom_");
+ }
+
+ /**
+ * 处理几何类型数据
+ *
+ * @param value 几何数据值
+ * @return 处理后的几何数据
+ */
+ private String handleGeometryData(String value) {
+ logger.debug("原始几何数据值: " + value);
+
+ if (value == null || value.isEmpty()) {
+ logger.debug("几何数据为空,返回 NULL");
+ return "NULL";
+ }
+
+ // 尝试不同的几何数据格式处理
+ try {
+ // 直接尝试使用 ST_GeomFromText 函数来转换几何数据
+ // 不再检查是否为标准的 WKT 格式,因为 MySQL 的 ST_AsText 函数已经保证返回标准的 WKT 格式
+ logger.debug("尝试使用 ST_GeomFromText 函数转换几何数据: " + value.substring(0, Math.min(value.length(), 50)) + "...");
+ return "ST_GeomFromText('" + value + "')";
+ } catch (Exception e) {
+ logger.error("处理几何数据时出错: " + e.getMessage() + ", 原始值: " + value);
+ return "NULL"; // 出错时返回 NULL
+ }
+ }
+
@Override
--
Gitblit v1.9.3