新增MySQL和pg数据库的同步
This commit is contained in:
@@ -192,7 +192,6 @@ public class taskDbSync {
|
||||
private String mapMySqlTypeToPgType(String mySqlType, int columnSize, int decimalDigits) {
|
||||
// 统一转为大写处理,避免类型字符串大小写问题
|
||||
String type = mySqlType.toUpperCase();
|
||||
|
||||
return switch (type) {
|
||||
// 整数类型映射
|
||||
case "INT", "INTEGER" -> "INTEGER";
|
||||
@@ -200,7 +199,6 @@ public class taskDbSync {
|
||||
case "SMALLINT" -> "SMALLINT";
|
||||
case "MEDIUMINT" -> "INTEGER"; // PostgresSQL无MEDIUMINT,用INTEGER兼容
|
||||
case "BIGINT" -> "BIGINT";
|
||||
|
||||
// 浮点类型映射
|
||||
case "FLOAT" -> columnSize > 24 ? "DOUBLE PRECISION" : "REAL"; // FLOAT(24)以下映射为REAL
|
||||
case "DOUBLE", "DOUBLE PRECISION" -> "DOUBLE PRECISION";
|
||||
@@ -209,7 +207,6 @@ public class taskDbSync {
|
||||
int scale = Math.max(decimalDigits, 0);
|
||||
yield "NUMERIC(" + precision + "," + scale + ")";
|
||||
}
|
||||
|
||||
// 字符串类型映射
|
||||
case "VARCHAR" -> {
|
||||
// PostgresSQL VARCHAR无长度限制时建议用TEXT
|
||||
@@ -219,30 +216,25 @@ public class taskDbSync {
|
||||
case "CHAR" -> "CHAR(" + (columnSize > 0 ? columnSize : 1) + ")";
|
||||
case "TEXT", "MEDIUMTEXT", "TINYTEXT" -> "TEXT";
|
||||
case "LONGTEXT" -> "TEXT"; // PostgresSQL TEXT无长度限制
|
||||
|
||||
// 二进制类型映射
|
||||
case "BLOB" -> "BYTEA";
|
||||
case "TINYBLOB", "MEDIUMBLOB", "LONGBLOB" -> "BYTEA";
|
||||
case "BINARY" -> "BYTEA";
|
||||
case "VARBINARY" -> "BYTEA";
|
||||
|
||||
// 日期时间类型映射
|
||||
case "DATE" -> "DATE";
|
||||
case "TIME" -> "TIME";
|
||||
case "DATETIME", "TIMESTAMP" -> "TIMESTAMP";
|
||||
case "YEAR" -> "SMALLINT"; // YEAR用SMALLINT存储更高效
|
||||
|
||||
// 特殊类型映射
|
||||
case "BOOLEAN" -> "BOOLEAN";
|
||||
case "JSON", "JSONB" -> "JSONB"; // PostgresSQL推荐用JSONB
|
||||
case "ENUM" -> "VARCHAR(255)"; // ENUM转为字符串存储,需业务层保证合法性
|
||||
case "SET" -> "TEXT"; // SET用TEXT存储,逗号分隔
|
||||
|
||||
// 几何类型(简化映射)
|
||||
case "POINT" -> "POINT";
|
||||
case "LINESTRING" -> "LINESTRING";
|
||||
case "POLYGON" -> "POLYGON";
|
||||
|
||||
// 未匹配类型的默认处理
|
||||
default -> {
|
||||
// 日志输出未匹配的类型,便于后续优化
|
||||
|
||||
Reference in New Issue
Block a user