首页 > 数据库 >我需要 把 目标数据源中的表 获取到表的字段和字段的类型等信息,然后在目标数据源中创建表,并解析2个不同数据库的表的字段,用Java 创建表

我需要 把 目标数据源中的表 获取到表的字段和字段的类型等信息,然后在目标数据源中创建表,并解析2个不同数据库的表的字段,用Java 创建表

时间:2023-08-02 22:36:02浏览次数:43  
标签:Java String 创建 数据源 TEXT BLOB typeMapping put VARCHAR

当涉及到将Oracle数据库字段类型映射为MySQL数据库字段类型时,考虑到不同数据库的差异和复杂性,以下是一个更全面的映射示例,涵盖了更多的Oracle字段类型及其可能的MySQL对应类型。

import java.util.HashMap;
import java.util.Map;

public class OracleToMySQLTypeConverter {

    private static Map<String, String> typeMapping;

    static {
        typeMapping = new HashMap<>();
        typeMapping.put("NUMBER", "DECIMAL");
        typeMapping.put("VARCHAR2", "VARCHAR");
        typeMapping.put("CHAR", "CHAR");
        typeMapping.put("NCHAR", "CHAR");
        typeMapping.put("NVARCHAR2", "VARCHAR");
        typeMapping.put("DATE", "DATE");
        typeMapping.put("TIMESTAMP", "DATETIME");
        typeMapping.put("CLOB", "TEXT");
        typeMapping.put("NCLOB", "TEXT");
        typeMapping.put("BLOB", "BLOB");
        typeMapping.put("BINARY_DOUBLE", "DOUBLE");
        typeMapping.put("BINARY_FLOAT", "FLOAT");
        typeMapping.put("RAW", "BINARY");
        typeMapping.put("LONG RAW", "BLOB");
        typeMapping.put("LONG", "TEXT");
        typeMapping.put("FLOAT", "FLOAT");
        typeMapping.put("REAL", "REAL");
        typeMapping.put("INTEGER", "INT");
        typeMapping.put("SMALLINT", "SMALLINT");
        typeMapping.put("NUMERIC", "NUMERIC");
        typeMapping.put("BOOLEAN", "BOOLEAN");
        typeMapping.put("VARCHAR", "VARCHAR");
        typeMapping.put("NVARCHAR", "VARCHAR");
        typeMapping.put("VARCHAR2", "VARCHAR");
        typeMapping.put("NCHAR", "CHAR");
        typeMapping.put("CHAR", "CHAR");
        typeMapping.put("LONGVARCHAR", "TEXT");
        typeMapping.put("BINARY", "BINARY");
        typeMapping.put("VARBINARY", "VARBINARY");
        typeMapping.put("LONGVARBINARY", "BLOB");
        typeMapping.put("BLOB", "BLOB");
        typeMapping.put("CLOB", "TEXT");
        typeMapping.put("NCLOB", "TEXT");
        typeMapping.put("ROWID", "VARCHAR");
        // 添加其他类型映射
    }

    public static String convertType(String oracleType) {
        String mysqlType = typeMapping.get(oracleType);
        return mysqlType != null ? mysqlType : "UNKNOWN";
    }

    public static void main(String[] args) {
        String oracleFieldType = "NUMBER";
        String mysqlFieldType = convertType(oracleFieldType);
        System.out.println("Oracle Field Type: " + oracleFieldType);
        System.out.println("MySQL Field Type: " + mysqlFieldType);
    }
}

在这个示例中,我添加了更多的类型映射,涵盖了更多的数据类型,包括BOOLEANNUMERICVARBINARYLONGVARBINARY等等。请注意,这只是一个简化的映射,实际情况可能更加复杂。

在实际应用中,你可能还需要考虑类型长度、精度、约束、默认值等方面的映射。如果你的应用需要更全面和精确的类型映射,建议仔细研究Oracle和MySQL数据库的官方文档,以及相关的数据库迁移工具。

标签:Java,String,创建,数据源,TEXT,BLOB,typeMapping,put,VARCHAR
From: https://www.cnblogs.com/wanglichaoya/p/17601962.html

相关文章

  • Java面试题 P42:框架篇:Spring-Spring框架中的单例bean是线程安全的吗?Spring框架中的bea
        ......
  • 05_llvm IR测试创建ifelse语句及多个block
    一个ifelse源码编译先看如下代码:intfunc(inta){intb;if(a>5)b=6;elseb=5;returnb;}编译命令../output/bin/clang++-emit-llvmllvm_if_else.c-S-oir.ll编译后的IR如下:;ModuleID='llvm_if_else.c'source_filename="llvm_if_else.c&q......
  • Java学习Day06
    第四章流程控制语句一、概述1.1、说明在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。也就是说,程序的流程对运行结果有直接的影响。所以,我们必须清楚每条语句的执行流程。而且,很多时候我们要通过控制语句的执行顺序来实现我们要完成的功能。简单来说......
  • Java学习Day07
    第六章方法一、方法1.1、概述在我们的日常生活中,方法可以理解为要做某件事情,而采取的解决办法。如:小明同学在路边准备坐车来学校学习。这就面临着一件事情(坐车到学校这件事情)需要解决,解决办法呢?可采用坐公交车或坐出租车的方式来学校,那么,这种解决某件事情的办法,我们就称为方......
  • java 十六进制字符串转换为有符号整数
    StringhexString="FEF7";//十六进制字符串intintValue=Integer.parseInt(hexString,16);//将十六进制字符串转换为整数shortsignedValue=(short)intValue;//转换为短整型(16位有符号整数)intintValue=(bytes[1]&0xFF)<<8|(bytes[0]&0xFF);//合并......
  • 03_llvm_IR测试创建变量
    主要分全局变量、函数参数、局部变量(常量)与返回值测试全局变量介绍说明、代码、编译与结果如下:#include"llvm/IR/Module.h"#include"llvm/IR/LLVMContext.h"#include"llvm/Support/raw_ostream.h"#include"llvm/IR/Function.h"#include"llvm/IR/Verifier.h&qu......
  • Java内部类
    一、内部类的定义:定义在类中的类二、内部类的作用内部类可以访问外部类的所有数据,包括被【private修饰的私有数据】(1)为什么内部类可以访问外部类的所有成员变量内部类编译后会单独生成一份class文件,编译器会自动为内部类添加一个【外部类类型】的实例,内部类通过【外部类......
  • 怀念中的java
     学了这门语言后一直没能做成项目,倒是安装环境,用记事本编辑的话,除了js最好做的就是java了。 以前学java的时候是一帮很有朝气的同学,在一个培训班,每天苦哈哈。从c开始学的语言,学完基础部分转入java。引入面向对象。后来引发了自己对面向对象长达好多好多年的思考。 老师说......
  • 老杜 JavaWeb 讲解(十七) ——JSP补充
    (十六)JSP补充相关视频:49-JSP的page指令以及九大内置对象和EL表达式指令指令的作用:指导JSP的翻译引擎如何工作(指导当前的JSP翻译引擎如何翻译JSP文件。)指令包括哪些呢?include指令:包含指令,在JSP中完成静态包含,很少用了。(这里不讲)taglib指令:引入标签库的指令。这个到JS......
  • 软件测试 | Java中的关键字
    Java中也有许多关键字(也叫保留字),如public、static等,这些关键字不能当做标识符使用。表2-1列出了Java中的关键字,这些关键字并不需要去硬背,因为在程序开发中一旦使用了这些关键字做标识符时,编辑器会自动提示错误。对于以上的关键字,要特别注意的有如下3点:(1)虽然goto、const在Java中并没......