一款专业的异构数据库结构转换工具

140 阅读2分钟

背景

一部分开发者会面临这样一个场景:原先公司用的是像 MySQL 这种流行的数据库,后来经过大量的生产环境实践,发现 MySQL 并不太适合,有其他的数据库更贴合自己的业务场景,所以决定更换。

在通常情况下,虽然数据库类型要更换,但是我们的实体关系还是不变的,也就是说我们的表结构信息是基本相同的。我们只需要处理数据库之间的差异,比如类型差异,函数差异,索引差异等。

这就带来了另一些问题,处理这些冲突需要我们对新数据库有非常熟悉的掌握;另外就是大型软件系统的表数量可能有成百上千张,每个表的字段数量亦是如此。这两点会大量耗费开发者的时间与精力。

常见的解决办法

  • 常见的解决办法是通过编写脚本的方式,来进行自动化处理,如下面的 mysql_to_doris.py 脚本(伪代码仅做展示用),就是帮助自动转化 MySQL 到 Doris 表结构的
import pymysql

class TableColumnEntity:
    def __init__(self, column_name, ordinal_position, data_type, character_maximum_length, column_type, column_key,
                 column_comment): # 定义 Table, column 实体

def info_config():  # 读取表配置信息

def table_column_info(): # 连接数据库获取元信息

def mysql_type_convert(data_type, character_maximum_length, column_type):
    # 类型转换
 
def batch_mysql_to_doris(info_map, table_map):
    # 此处略去一万行代码,处理各种差异

if __name__ == '__main__':
    # 读取表信息配置文件
    info_map = info_config()
 
    # 读取mysql获取表的column
    table_map = table_column_info()
 
    # 生成doris建表语句
    batch_mysql_to_doris(info_map, table_map)

  • 脚本编写起来比较繁琐,如有其他对端数据库的转换需求又要重新编写,不懂得 Python 语法甚至还要学习一门新语言。所以有没有其他准确又快捷的方式?

CloudDM 一键生成

  • 打开 CloudDM,右键选择要转换的表,选择 获取 DDL 语句 功能

image.png

  • 切换到 生成DDL 选项,选择要转换的对端数据库,比如 Doris

image.png

  • 转换完成,复制语句就可以使用

image.png

我们是怎么做的

  • 流程与上述的脚本的处理方式类似,不过我们细节把控更准确,转换出的结果更专业。具体流程如下图所示:

yuque_diagram (1)_副本.jpg

软件下载与反馈