Parcourir la source

支持oracle标准数据类型

穿云 il y a 4 mois
Parent
commit
2556f20ae4
24 fichiers modifiés avec 497 ajouts et 132 suppressions
  1. 0 10
      dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLBooleanType.java
  2. 0 10
      dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLByteType.java
  3. 0 10
      dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLBytesType.java
  4. 0 10
      dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLDateType.java
  5. 0 10
      dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLDecimalType.java
  6. 0 10
      dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLDoubleType.java
  7. 0 10
      dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLFloatType.java
  8. 0 10
      dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLIntType.java
  9. 0 10
      dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLLongType.java
  10. 0 10
      dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLShortType.java
  11. 0 10
      dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLStringType.java
  12. 0 10
      dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLTimeType.java
  13. 0 10
      dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLTimestampType.java
  14. 33 0
      dbsyncer-connector/dbsyncer-connector-oracle/src/main/java/org/dbsyncer/connector/oracle/schema/OracleSchemaResolver.java
  15. 52 0
      dbsyncer-connector/dbsyncer-connector-oracle/src/main/java/org/dbsyncer/connector/oracle/schema/support/OracleBytesType.java
  16. 50 0
      dbsyncer-connector/dbsyncer-connector-oracle/src/main/java/org/dbsyncer/connector/oracle/schema/support/OracleDateType.java
  17. 50 0
      dbsyncer-connector/dbsyncer-connector-oracle/src/main/java/org/dbsyncer/connector/oracle/schema/support/OracleDecimalType.java
  18. 49 0
      dbsyncer-connector/dbsyncer-connector-oracle/src/main/java/org/dbsyncer/connector/oracle/schema/support/OracleDoubleType.java
  19. 50 0
      dbsyncer-connector/dbsyncer-connector-oracle/src/main/java/org/dbsyncer/connector/oracle/schema/support/OracleFloatType.java
  20. 51 0
      dbsyncer-connector/dbsyncer-connector-oracle/src/main/java/org/dbsyncer/connector/oracle/schema/support/OracleIntType.java
  21. 49 0
      dbsyncer-connector/dbsyncer-connector-oracle/src/main/java/org/dbsyncer/connector/oracle/schema/support/OracleLongType.java
  22. 56 0
      dbsyncer-connector/dbsyncer-connector-oracle/src/main/java/org/dbsyncer/connector/oracle/schema/support/OracleStringType.java
  23. 51 0
      dbsyncer-connector/dbsyncer-connector-oracle/src/main/java/org/dbsyncer/connector/oracle/schema/support/OracleTimestampType.java
  24. 6 2
      dbsyncer-sdk/src/main/java/org/dbsyncer/sdk/schema/AbstractDataType.java

+ 0 - 10
dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLBooleanType.java

@@ -39,11 +39,6 @@ public final class MySQLBooleanType extends BooleanType {
         return throwUnsupportedException(val, field);
     }
 
-    @Override
-    protected Boolean getDefaultMergedVal() {
-        return null;
-    }
-
     @Override
     protected Object convert(Object val, Field field) {
         if (val instanceof Boolean) {
@@ -53,9 +48,4 @@ public final class MySQLBooleanType extends BooleanType {
         return throwUnsupportedException(val, field);
     }
 
-    @Override
-    protected Object getDefaultConvertedVal() {
-        return null;
-    }
-
 }

+ 0 - 10
dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLByteType.java

@@ -34,11 +34,6 @@ public final class MySQLByteType extends ByteType {
         return throwUnsupportedException(val, field);
     }
 
-    @Override
-    protected Byte getDefaultMergedVal() {
-        return null;
-    }
-
     @Override
     protected Object convert(Object val, Field field) {
         if (val instanceof Byte) {
@@ -47,9 +42,4 @@ public final class MySQLByteType extends ByteType {
         return throwUnsupportedException(val, field);
     }
 
-    @Override
-    protected Object getDefaultConvertedVal() {
-        return null;
-    }
-
 }

+ 0 - 10
dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLBytesType.java

@@ -45,11 +45,6 @@ public final class MySQLBytesType extends BytesType {
         return throwUnsupportedException(val, field);
     }
 
-    @Override
-    protected byte[] getDefaultMergedVal() {
-        return null;
-    }
-
     @Override
     protected Object convert(Object val, Field field) {
         if (val instanceof byte[]) {
@@ -58,9 +53,4 @@ public final class MySQLBytesType extends BytesType {
         return throwUnsupportedException(val, field);
     }
 
-    @Override
-    protected Object getDefaultConvertedVal() {
-        return null;
-    }
-
 }

+ 0 - 10
dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLDateType.java

@@ -32,11 +32,6 @@ public final class MySQLDateType extends DateType {
         return throwUnsupportedException(val, field);
     }
 
-    @Override
-    protected Date getDefaultMergedVal() {
-        return null;
-    }
-
     @Override
     protected Object convert(Object val, Field field) {
         if (val instanceof Date) {
@@ -45,9 +40,4 @@ public final class MySQLDateType extends DateType {
         return throwUnsupportedException(val, field);
     }
 
-    @Override
-    protected Object getDefaultConvertedVal() {
-        return null;
-    }
-
 }

+ 0 - 10
dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLDecimalType.java

@@ -51,11 +51,6 @@ public final class MySQLDecimalType extends DecimalType {
         return throwUnsupportedException(val, field);
     }
 
-    @Override
-    protected BigDecimal getDefaultMergedVal() {
-        return null;
-    }
-
     @Override
     protected Object convert(Object val, Field field) {
         if (val instanceof Number) {
@@ -64,9 +59,4 @@ public final class MySQLDecimalType extends DecimalType {
         return throwUnsupportedException(val, field);
     }
 
-    @Override
-    protected Object getDefaultConvertedVal() {
-        return null;
-    }
-
 }

+ 0 - 10
dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLDoubleType.java

@@ -52,11 +52,6 @@ public final class MySQLDoubleType extends DoubleType {
         return throwUnsupportedException(val, field);
     }
 
-    @Override
-    protected Double getDefaultMergedVal() {
-        return null;
-    }
-
     @Override
     protected Object convert(Object val, Field field) {
         if (val instanceof Number) {
@@ -65,9 +60,4 @@ public final class MySQLDoubleType extends DoubleType {
         return throwUnsupportedException(val, field);
     }
 
-    @Override
-    protected Object getDefaultConvertedVal() {
-        return null;
-    }
-
 }

+ 0 - 10
dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLFloatType.java

@@ -46,11 +46,6 @@ public final class MySQLFloatType extends FloatType {
         return throwUnsupportedException(val, field);
     }
 
-    @Override
-    protected Float getDefaultMergedVal() {
-        return null;
-    }
-
     @Override
     protected Object convert(Object val, Field field) {
         if (val instanceof Number) {
@@ -59,9 +54,4 @@ public final class MySQLFloatType extends FloatType {
         return throwUnsupportedException(val, field);
     }
 
-    @Override
-    protected Object getDefaultConvertedVal() {
-        return null;
-    }
-
 }

+ 0 - 10
dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLIntType.java

@@ -59,11 +59,6 @@ public final class MySQLIntType extends IntType {
         return throwUnsupportedException(val, field);
     }
 
-    @Override
-    protected Integer getDefaultMergedVal() {
-        return null;
-    }
-
     @Override
     protected Object convert(Object val, Field field) {
         if (val instanceof Number) {
@@ -72,9 +67,4 @@ public final class MySQLIntType extends IntType {
         return throwUnsupportedException(val, field);
     }
 
-    @Override
-    protected Object getDefaultConvertedVal() {
-        return null;
-    }
-
 }

+ 0 - 10
dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLLongType.java

@@ -47,11 +47,6 @@ public final class MySQLLongType extends LongType {
         return throwUnsupportedException(val, field);
     }
 
-    @Override
-    protected Long getDefaultMergedVal() {
-        return null;
-    }
-
     @Override
     protected Object convert(Object val, Field field) {
         if (val instanceof Number) {
@@ -60,9 +55,4 @@ public final class MySQLLongType extends LongType {
         return throwUnsupportedException(val, field);
     }
 
-    @Override
-    protected Object getDefaultConvertedVal() {
-        return null;
-    }
-
 }

+ 0 - 10
dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLShortType.java

@@ -46,11 +46,6 @@ public final class MySQLShortType extends ShortType {
         return throwUnsupportedException(val, field);
     }
 
-    @Override
-    protected Short getDefaultMergedVal() {
-        return null;
-    }
-
     @Override
     protected Object convert(Object val, Field field) {
         if (val instanceof Number) {
@@ -59,9 +54,4 @@ public final class MySQLShortType extends ShortType {
         return throwUnsupportedException(val, field);
     }
 
-    @Override
-    protected Object getDefaultConvertedVal() {
-        return null;
-    }
-
 }

+ 0 - 10
dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLStringType.java

@@ -55,11 +55,6 @@ public final class MySQLStringType extends StringType {
         }
     }
 
-    @Override
-    protected String getDefaultMergedVal() {
-        return null;
-    }
-
     @Override
     protected Object convert(Object val, Field field) {
         if (val instanceof String) {
@@ -68,9 +63,4 @@ public final class MySQLStringType extends StringType {
         return throwUnsupportedException(val, field);
     }
 
-    @Override
-    protected Object getDefaultConvertedVal() {
-        return null;
-    }
-
 }

+ 0 - 10
dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLTimeType.java

@@ -32,11 +32,6 @@ public final class MySQLTimeType extends TimeType {
         return throwUnsupportedException(val, field);
     }
 
-    @Override
-    protected Time getDefaultMergedVal() {
-        return null;
-    }
-
     @Override
     protected Object convert(Object val, Field field) {
         if (val instanceof Time) {
@@ -45,9 +40,4 @@ public final class MySQLTimeType extends TimeType {
         return throwUnsupportedException(val, field);
     }
 
-    @Override
-    protected Object getDefaultConvertedVal() {
-        return null;
-    }
-
 }

+ 0 - 10
dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLTimestampType.java

@@ -33,11 +33,6 @@ public final class MySQLTimestampType extends TimestampType {
         return throwUnsupportedException(val, field);
     }
 
-    @Override
-    protected Timestamp getDefaultMergedVal() {
-        return null;
-    }
-
     @Override
     protected Object convert(Object val, Field field) {
         if (val instanceof Timestamp) {
@@ -46,9 +41,4 @@ public final class MySQLTimestampType extends TimestampType {
         return throwUnsupportedException(val, field);
     }
 
-    @Override
-    protected Object getDefaultConvertedVal() {
-        return null;
-    }
-
 }

+ 33 - 0
dbsyncer-connector/dbsyncer-connector-oracle/src/main/java/org/dbsyncer/connector/oracle/schema/OracleSchemaResolver.java

@@ -0,0 +1,33 @@
+/**
+ * DBSyncer Copyright 2020-2024 All Rights Reserved.
+ */
+package org.dbsyncer.connector.oracle.schema;
+
+import org.dbsyncer.connector.oracle.OracleException;
+import org.dbsyncer.connector.oracle.schema.support.OracleIntType;
+import org.dbsyncer.connector.oracle.schema.support.OracleLongType;
+import org.dbsyncer.sdk.schema.AbstractSchemaResolver;
+import org.dbsyncer.sdk.schema.DataType;
+
+import java.util.Map;
+import java.util.stream.Stream;
+
+/**
+ * @Author 穿云
+ * @Version 1.0.0
+ * @Date 2024-12-24 23:45
+ */
+public final class OracleSchemaResolver extends AbstractSchemaResolver {
+    @Override
+    protected void initDataTypeMapping(Map<String, DataType> mapping) {
+        Stream.of(
+                new OracleIntType(),
+                new OracleLongType()
+        ).forEach(t -> t.getSupportedTypeName().forEach(typeName -> {
+            if (mapping.containsKey(typeName)) {
+                throw new OracleException("Duplicate type name: " + typeName);
+            }
+            mapping.put(typeName, t);
+        }));
+    }
+}

+ 52 - 0
dbsyncer-connector/dbsyncer-connector-oracle/src/main/java/org/dbsyncer/connector/oracle/schema/support/OracleBytesType.java

@@ -0,0 +1,52 @@
+/**
+ * DBSyncer Copyright 2020-2024 All Rights Reserved.
+ */
+package org.dbsyncer.connector.oracle.schema.support;
+
+import org.dbsyncer.sdk.model.Field;
+import org.dbsyncer.sdk.schema.support.BytesType;
+
+import java.util.Arrays;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * @Author 穿云
+ * @Version 1.0.0
+ * @Date 2024-12-25 00:03
+ */
+public final class OracleBytesType extends BytesType {
+
+    private enum TypeEnum {
+        BLOB("BLOB"),
+        RAW("RAW"),
+        LONG_RAW("LONG RAW"),
+        BFILE("BFILE");
+
+        private final String value;
+
+        TypeEnum(String value) {
+            this.value = value;
+        }
+
+        public String getValue() {
+            return value;
+        }
+    }
+
+    @Override
+    public Set<String> getSupportedTypeName() {
+        return Arrays.stream(TypeEnum.values()).map(TypeEnum::getValue).collect(Collectors.toSet());
+    }
+
+    @Override
+    protected byte[] merge(Object val, Field field) {
+        return throwUnsupportedException(val, field);
+    }
+
+    @Override
+    protected Object convert(Object val, Field field) {
+        return throwUnsupportedException(val, field);
+    }
+
+}

+ 50 - 0
dbsyncer-connector/dbsyncer-connector-oracle/src/main/java/org/dbsyncer/connector/oracle/schema/support/OracleDateType.java

@@ -0,0 +1,50 @@
+/**
+ * DBSyncer Copyright 2020-2024 All Rights Reserved.
+ */
+package org.dbsyncer.connector.oracle.schema.support;
+
+import org.dbsyncer.sdk.model.Field;
+import org.dbsyncer.sdk.schema.support.DateType;
+
+import java.sql.Date;
+import java.util.Arrays;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * @Author 穿云
+ * @Version 1.0.0
+ * @Date 2024-12-25 00:03
+ */
+public final class OracleDateType extends DateType {
+
+    private enum TypeEnum {
+        DATE("DATE");
+
+        private final String value;
+
+        TypeEnum(String value) {
+            this.value = value;
+        }
+
+        public String getValue() {
+            return value;
+        }
+    }
+
+    @Override
+    public Set<String> getSupportedTypeName() {
+        return Arrays.stream(TypeEnum.values()).map(TypeEnum::getValue).collect(Collectors.toSet());
+    }
+
+    @Override
+    protected Date merge(Object val, Field field) {
+        return throwUnsupportedException(val, field);
+    }
+
+    @Override
+    protected Object convert(Object val, Field field) {
+        return throwUnsupportedException(val, field);
+    }
+
+}

+ 50 - 0
dbsyncer-connector/dbsyncer-connector-oracle/src/main/java/org/dbsyncer/connector/oracle/schema/support/OracleDecimalType.java

@@ -0,0 +1,50 @@
+/**
+ * DBSyncer Copyright 2020-2024 All Rights Reserved.
+ */
+package org.dbsyncer.connector.oracle.schema.support;
+
+import org.dbsyncer.sdk.model.Field;
+import org.dbsyncer.sdk.schema.support.DecimalType;
+
+import java.math.BigDecimal;
+import java.util.Arrays;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * @Author 穿云
+ * @Version 1.0.0
+ * @Date 2024-12-25 00:03
+ */
+public final class OracleDecimalType extends DecimalType {
+
+    private enum TypeEnum {
+        FLOAT("FLOAT");
+
+        private final String value;
+
+        TypeEnum(String value) {
+            this.value = value;
+        }
+
+        public String getValue() {
+            return value;
+        }
+    }
+
+    @Override
+    public Set<String> getSupportedTypeName() {
+        return Arrays.stream(TypeEnum.values()).map(TypeEnum::getValue).collect(Collectors.toSet());
+    }
+
+    @Override
+    protected BigDecimal merge(Object val, Field field) {
+        return throwUnsupportedException(val, field);
+    }
+
+    @Override
+    protected Object convert(Object val, Field field) {
+        return throwUnsupportedException(val, field);
+    }
+
+}

+ 49 - 0
dbsyncer-connector/dbsyncer-connector-oracle/src/main/java/org/dbsyncer/connector/oracle/schema/support/OracleDoubleType.java

@@ -0,0 +1,49 @@
+/**
+ * DBSyncer Copyright 2020-2024 All Rights Reserved.
+ */
+package org.dbsyncer.connector.oracle.schema.support;
+
+import org.dbsyncer.sdk.model.Field;
+import org.dbsyncer.sdk.schema.support.DoubleType;
+
+import java.util.Arrays;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * @Author 穿云
+ * @Version 1.0.0
+ * @Date 2024-12-25 00:03
+ */
+public final class OracleDoubleType extends DoubleType {
+
+    private enum TypeEnum {
+        BINARY_DOUBLE("BINARY_DOUBLE");
+
+        private final String value;
+
+        TypeEnum(String value) {
+            this.value = value;
+        }
+
+        public String getValue() {
+            return value;
+        }
+    }
+
+    @Override
+    public Set<String> getSupportedTypeName() {
+        return Arrays.stream(TypeEnum.values()).map(TypeEnum::getValue).collect(Collectors.toSet());
+    }
+
+    @Override
+    protected Double merge(Object val, Field field) {
+        return throwUnsupportedException(val, field);
+    }
+
+    @Override
+    protected Object convert(Object val, Field field) {
+        return throwUnsupportedException(val, field);
+    }
+
+}

+ 50 - 0
dbsyncer-connector/dbsyncer-connector-oracle/src/main/java/org/dbsyncer/connector/oracle/schema/support/OracleFloatType.java

@@ -0,0 +1,50 @@
+/**
+ * DBSyncer Copyright 2020-2024 All Rights Reserved.
+ */
+package org.dbsyncer.connector.oracle.schema.support;
+
+import org.dbsyncer.sdk.model.Field;
+import org.dbsyncer.sdk.schema.support.FloatType;
+
+import java.util.Arrays;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * @Author 穿云
+ * @Version 1.0.0
+ * @Date 2024-12-25 00:03
+ */
+public final class OracleFloatType extends FloatType {
+
+    private enum TypeEnum {
+        BINARY_FLOAT("BINARY_FLOAT"),
+        REAL("REAL");
+
+        private final String value;
+
+        TypeEnum(String value) {
+            this.value = value;
+        }
+
+        public String getValue() {
+            return value;
+        }
+    }
+
+    @Override
+    public Set<String> getSupportedTypeName() {
+        return Arrays.stream(TypeEnum.values()).map(TypeEnum::getValue).collect(Collectors.toSet());
+    }
+
+    @Override
+    protected Float merge(Object val, Field field) {
+        return throwUnsupportedException(val, field);
+    }
+
+    @Override
+    protected Object convert(Object val, Field field) {
+        return throwUnsupportedException(val, field);
+    }
+
+}

+ 51 - 0
dbsyncer-connector/dbsyncer-connector-oracle/src/main/java/org/dbsyncer/connector/oracle/schema/support/OracleIntType.java

@@ -0,0 +1,51 @@
+/**
+ * DBSyncer Copyright 2020-2024 All Rights Reserved.
+ */
+package org.dbsyncer.connector.oracle.schema.support;
+
+import org.dbsyncer.sdk.model.Field;
+import org.dbsyncer.sdk.schema.support.IntType;
+
+import java.util.Arrays;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * @Author 穿云
+ * @Version 1.0.0
+ * @Date 2024-12-25 00:03
+ */
+public final class OracleIntType extends IntType {
+
+    private enum TypeEnum {
+        INT("INT"),
+        INTEGER("INTEGER"),
+        NUMBER("NUMBER9");
+
+        private final String value;
+
+        TypeEnum(String value) {
+            this.value = value;
+        }
+
+        public String getValue() {
+            return value;
+        }
+    }
+
+    @Override
+    public Set<String> getSupportedTypeName() {
+        return Arrays.stream(TypeEnum.values()).map(TypeEnum::getValue).collect(Collectors.toSet());
+    }
+
+    @Override
+    protected Integer merge(Object val, Field field) {
+        return throwUnsupportedException(val, field);
+    }
+
+    @Override
+    protected Object convert(Object val, Field field) {
+        return throwUnsupportedException(val, field);
+    }
+
+}

+ 49 - 0
dbsyncer-connector/dbsyncer-connector-oracle/src/main/java/org/dbsyncer/connector/oracle/schema/support/OracleLongType.java

@@ -0,0 +1,49 @@
+/**
+ * DBSyncer Copyright 2020-2024 All Rights Reserved.
+ */
+package org.dbsyncer.connector.oracle.schema.support;
+
+import org.dbsyncer.sdk.model.Field;
+import org.dbsyncer.sdk.schema.support.LongType;
+
+import java.util.Arrays;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * @Author 穿云
+ * @Version 1.0.0
+ * @Date 2024-12-25 00:03
+ */
+public final class OracleLongType extends LongType {
+
+    private enum TypeEnum {
+        NUMBER("NUMBER10-18");
+
+        private final String value;
+
+        TypeEnum(String value) {
+            this.value = value;
+        }
+
+        public String getValue() {
+            return value;
+        }
+    }
+
+    @Override
+    public Set<String> getSupportedTypeName() {
+        return Arrays.stream(TypeEnum.values()).map(TypeEnum::getValue).collect(Collectors.toSet());
+    }
+
+    @Override
+    protected Long merge(Object val, Field field) {
+        return throwUnsupportedException(val, field);
+    }
+
+    @Override
+    protected Object convert(Object val, Field field) {
+        return throwUnsupportedException(val, field);
+    }
+
+}

+ 56 - 0
dbsyncer-connector/dbsyncer-connector-oracle/src/main/java/org/dbsyncer/connector/oracle/schema/support/OracleStringType.java

@@ -0,0 +1,56 @@
+/**
+ * DBSyncer Copyright 2020-2024 All Rights Reserved.
+ */
+package org.dbsyncer.connector.oracle.schema.support;
+
+import org.dbsyncer.sdk.model.Field;
+import org.dbsyncer.sdk.schema.support.StringType;
+
+import java.util.Arrays;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * @Author 穿云
+ * @Version 1.0.0
+ * @Date 2024-12-25 00:03
+ */
+public final class OracleStringType extends StringType {
+
+    private enum TypeEnum {
+        CHAR("CHAR"),
+        NCHAR("NCHAR"),
+        VARCHAR2("VARCHAR2"),
+        NVARCHAR2("NVARCHAR2"),
+        LONG("LONG"),
+        CLOB("CLOB"),
+        NCLOB("NCLOB"),
+        ROWID("ROWID");
+
+        private final String value;
+
+        TypeEnum(String value) {
+            this.value = value;
+        }
+
+        public String getValue() {
+            return value;
+        }
+    }
+
+    @Override
+    public Set<String> getSupportedTypeName() {
+        return Arrays.stream(TypeEnum.values()).map(TypeEnum::getValue).collect(Collectors.toSet());
+    }
+
+    @Override
+    protected String merge(Object val, Field field) {
+        return throwUnsupportedException(val, field);
+    }
+
+    @Override
+    protected Object convert(Object val, Field field) {
+        return throwUnsupportedException(val, field);
+    }
+
+}

+ 51 - 0
dbsyncer-connector/dbsyncer-connector-oracle/src/main/java/org/dbsyncer/connector/oracle/schema/support/OracleTimestampType.java

@@ -0,0 +1,51 @@
+/**
+ * DBSyncer Copyright 2020-2024 All Rights Reserved.
+ */
+package org.dbsyncer.connector.oracle.schema.support;
+
+import org.dbsyncer.sdk.model.Field;
+import org.dbsyncer.sdk.schema.support.TimestampType;
+
+import java.sql.Timestamp;
+import java.util.Arrays;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * @Author 穿云
+ * @Version 1.0.0
+ * @Date 2024-12-25 00:03
+ */
+public final class OracleTimestampType extends TimestampType {
+
+    private enum TypeEnum {
+        TIMESTAMP("TIMESTAMP"),
+        TIMESTAMP_WITH_LOCAL_TIME_ZONE("TIMESTAMP WITH LOCAL TIME ZONE");
+
+        private final String value;
+
+        TypeEnum(String value) {
+            this.value = value;
+        }
+
+        public String getValue() {
+            return value;
+        }
+    }
+
+    @Override
+    public Set<String> getSupportedTypeName() {
+        return Arrays.stream(TypeEnum.values()).map(TypeEnum::getValue).collect(Collectors.toSet());
+    }
+
+    @Override
+    protected Timestamp merge(Object val, Field field) {
+        return throwUnsupportedException(val, field);
+    }
+
+    @Override
+    protected Object convert(Object val, Field field) {
+        return throwUnsupportedException(val, field);
+    }
+
+}

+ 6 - 2
dbsyncer-sdk/src/main/java/org/dbsyncer/sdk/schema/AbstractDataType.java

@@ -35,7 +35,9 @@ public abstract class AbstractDataType<T> implements DataType {
      *
      * @return
      */
-    protected abstract T getDefaultMergedVal();
+    protected T getDefaultMergedVal() {
+        return null;
+    }
 
     /**
      * 转换为指定数据类型
@@ -51,7 +53,9 @@ public abstract class AbstractDataType<T> implements DataType {
      *
      * @return
      */
-    protected abstract Object getDefaultConvertedVal();
+    protected Object getDefaultConvertedVal() {
+        return null;
+    }
 
     @Override
     public Object mergeValue(Object val, Field field) {