|
@@ -93,17 +93,16 @@ public class MdbUtil {
|
|
|
Object value = row.get(colName);
|
|
Object value = row.get(colName);
|
|
|
|
|
|
|
|
int jdbcType = mapPostgresToJdbcType(pgType);
|
|
int jdbcType = mapPostgresToJdbcType(pgType);
|
|
|
- logger.info("aaaa-Setting value for column: {}, PostgreSQL type: {}, JDBC type: {}, value: {}", colName, pgType, jdbcType, value);
|
|
|
|
|
|
|
+
|
|
|
if (value == null) {
|
|
if (value == null) {
|
|
|
pstmt.setNull(i + 1, jdbcType);
|
|
pstmt.setNull(i + 1, jdbcType);
|
|
|
continue;
|
|
continue;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // 处理特殊类型,如 geometry 存为文本
|
|
|
|
|
|
|
+ String mdbType = mapPostgresToMdbType(pgType);
|
|
|
if (value.toString().contains("SRID")) {
|
|
if (value.toString().contains("SRID")) {
|
|
|
pstmt.setObject(i + 1, value.toString());
|
|
pstmt.setObject(i + 1, value.toString());
|
|
|
} else if (pgType.toLowerCase().contains("bytea")) {
|
|
} else if (pgType.toLowerCase().contains("bytea")) {
|
|
|
- // bytea类型需要特殊处理,转换为Base64字符串
|
|
|
|
|
if (value instanceof byte[]) {
|
|
if (value instanceof byte[]) {
|
|
|
byte[] bytes = (byte[]) value;
|
|
byte[] bytes = (byte[]) value;
|
|
|
pstmt.setObject(i + 1, Base64.getEncoder().encodeToString(bytes));
|
|
pstmt.setObject(i + 1, Base64.getEncoder().encodeToString(bytes));
|
|
@@ -117,33 +116,29 @@ public class MdbUtil {
|
|
|
} else {
|
|
} else {
|
|
|
pstmt.setObject(i + 1, value.toString());
|
|
pstmt.setObject(i + 1, value.toString());
|
|
|
}
|
|
}
|
|
|
- // 如果是数值类型,且值是字符串(可能是空字符串),尝试转换
|
|
|
|
|
- String mdbType = mapPostgresToMdbType(pgType);
|
|
|
|
|
- if (("INTEGER".equals(mdbType) || "DOUBLE".equals(mdbType)) && value instanceof String) {
|
|
|
|
|
- String strVal = (String) value;
|
|
|
|
|
- if (StringUtils.isEmpty(strVal)) {
|
|
|
|
|
- pstmt.setNull(i + 1, jdbcType);
|
|
|
|
|
- } else {
|
|
|
|
|
- try {
|
|
|
|
|
- if ("INTEGER".equals(mdbType)) {
|
|
|
|
|
- pstmt.setInt(i + 1, Integer.parseInt(strVal));
|
|
|
|
|
- } else {
|
|
|
|
|
- pstmt.setDouble(i + 1, Double.parseDouble(strVal));
|
|
|
|
|
- }
|
|
|
|
|
- } catch (NumberFormatException e) {
|
|
|
|
|
- pstmt.setNull(i + 1, jdbcType);
|
|
|
|
|
|
|
+ } else if (("INTEGER".equals(mdbType) || "DOUBLE".equals(mdbType)) && value instanceof String) {
|
|
|
|
|
+ String strVal = (String) value;
|
|
|
|
|
+ if (StringUtils.isEmpty(strVal)) {
|
|
|
|
|
+ pstmt.setNull(i + 1, jdbcType);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ try {
|
|
|
|
|
+ if ("INTEGER".equals(mdbType)) {
|
|
|
|
|
+ pstmt.setInt(i + 1, Integer.parseInt(strVal));
|
|
|
|
|
+ } else {
|
|
|
|
|
+ pstmt.setDouble(i + 1, Double.parseDouble(strVal));
|
|
|
}
|
|
}
|
|
|
|
|
+ } catch (NumberFormatException e) {
|
|
|
|
|
+ pstmt.setNull(i + 1, jdbcType);
|
|
|
}
|
|
}
|
|
|
- } else if ("DATETIME".equals(mdbType)) {
|
|
|
|
|
- // 确保日期类型正确
|
|
|
|
|
- if (value instanceof java.util.Date) {
|
|
|
|
|
- pstmt.setTimestamp(i + 1, new java.sql.Timestamp(((java.util.Date) value).getTime()));
|
|
|
|
|
- } else {
|
|
|
|
|
- pstmt.setObject(i + 1, value, jdbcType);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+ } else if ("DATETIME".equals(mdbType)) {
|
|
|
|
|
+ if (value instanceof java.util.Date) {
|
|
|
|
|
+ pstmt.setTimestamp(i + 1, new java.sql.Timestamp(((java.util.Date) value).getTime()));
|
|
|
} else {
|
|
} else {
|
|
|
pstmt.setObject(i + 1, value, jdbcType);
|
|
pstmt.setObject(i + 1, value, jdbcType);
|
|
|
}
|
|
}
|
|
|
|
|
+ } else {
|
|
|
|
|
+ pstmt.setObject(i + 1, value, jdbcType);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
pstmt.addBatch();
|
|
pstmt.addBatch();
|