美文网首页
数据库信息动态迁移:Pg、Hive、MySQL迁移到MySQL,

数据库信息动态迁移:Pg、Hive、MySQL迁移到MySQL,

作者: 唔哒喂 | 来源:发表于2022-09-24 01:15 被阅读0次

最近碰到个需求:

将其他系统的数据库信息迁移到本系统的MySQL数据库【定时】


image.png

解决逻辑:

1、获取到各类型数据库的建表语句,将其转换成MySQL建表语句,在MySQL中建表
2、读取各数据库的数据信息
3、INSERT 进入目标系统的数据库

实际操作

1、前端页面进行数据库信息的配置和需要读取的表信息配置,或者页面配置了部分,通过其他手段读取到其他信息
必传信息:host、port、db_type、schema、database。
其他信息:【定时访问周期】,用户名、密码最好也在前台配置【不过这边是写在文件中读取的】,配置需要拉取数据的表。

2、使用原始的JDBC方式和JDBCTemplate去进行操作。
当我们拿到上述的信息之后即可获取该数据库的数据库连接。

3、在上一步中获取到了数据库连接。接下来要分不同类型数据库进行处理。
MySQL【这里可能会涉及到版本问题,主要是utf8mb4的问题,写文时未考虑】:
由于本次源数据库中有MySQL,而目标数据库就是MySQL。同时MySQL有这样的语句来获取建表语句。
show create table TABLE_NAME
当获取到这个语句后,取出该建表语句,然后在目标库中执行即可。
其他【Pg、Hive】:
使用JDBC去读取元数据信息,来获取各字段的名称、类型、注释....还有表的注释信息。
之后使用字符串去进行拼接MySQL建表语句。【主要需要注意的是字段类型的转换】

代码部分

<p>
这个代码只是展示下我的执行顺序,JdbcVO就是前端所传的一些数据库信息,我这边的需求我需要转一下这个数据
<p>

  

    @Resource
    DatabaseUtils databaseUtils;

        /**
     * 调用jdbcjob
     * <p>
     *  这个代码只是展示下我的执行顺序,JdbcVO就是前端所传的一些数据库信息,我这边的需求我需要转一下这个数据
     * <p>
     * @param sysJob 系统工作
     * @throws Exception 异常
     */
    public void invokeJDBCJob(JdbcVO jdbcVO) throws Exception{
        

        // 1、创建JDBC基础连接信息对象
        JDBCInfo jdbcInfo = databaseUtils.createJdbcInfo(jdbcVO);
        jdbcInfo.setUser(username);
        jdbcInfo.setPassword(password);


        // 2、判断表是否已在本系统库存在
        if (!databaseUtils.isExistTable(jdbcVO.getTableName())) {
            // 3.1 生成本系统MySQL库建表语句
            String ddl = databaseUtils.getDdl(jdbcInfo);
            System.out.println("————————开始建表————————");
            System.out.println(ddl);
            // 3.2 建表
            databaseUtils.createTable(ddl);
            System.out.println("————————建表完成—————————");

            System.out.println("————————开始接入数据——————");
            // 3.3 第一次建表,全量迁移数据
            databaseUtils.transferAllData(jdbcInfo);
            System.out.println("—————————接入完成—————————");

        }else {
            log.info("{}", "表存在进行更新");
            databaseUtils.transferUpdate(jdbcInfo, jdbcVO);

        }

    }

DataBaseUtils行数太多,放到GitHub上
代码地址:数据库迁移工具:https://github.com/201811050890/database-tranfer-easy-use.git

相关文章

网友评论

      本文标题:数据库信息动态迁移:Pg、Hive、MySQL迁移到MySQL,

      本文链接:https://www.haomeiwen.com/subject/dgdoortx.html