#mysql #dbml #script #sql #diff #generate #migration

bin+lib dbml_diff_mysql

用于对比两个 DBML 文件并生成针对 MySQL 的 SQL 迁移脚本的工具

1 个不稳定版本

0.1.5 2024年3月15日
0.1.3 2023年11月11日
0.1.2 2023年11月9日
0.1.1 2023年11月2日
0.1.0 2023年11月2日

#683数据库接口

Download history 92/week @ 2024-03-09 43/week @ 2024-03-16 5/week @ 2024-03-23 17/week @ 2024-03-30 6/week @ 2024-04-06

每月138 次下载

MIT 许可证

25KB
612

dbml_diff_mysql

概述

  • 对比 dbml 文件和指定数据库的差别并输出 diff.sql
  • 生成 dbml 文件的 sql

需求

功能需求

  • 通过 dbml 文件和数据库的库表结构对比,生成 diff.sql
    • 如果 dbml 文件中有的表,数据库中没有,则生成 create table 语句
    • 如果 dbml 中的表,数据库中也有,则对比字段,生成 alter table 语句
      • 只做增加字段的操作,不做删除字段的操作,也不做修改字段的操作
    • 外键的对比
      • 如果 dbml 中有的外键,数据库中没有,则生成 create foreign key 语句

结构化分析

使用

DATABASE_URL=mysql://root:root@localhost:3306/
DIFF_DATABASE_URL=mysql://root:root@localhost:3306/
DIFF_DBML_PATH=./dbml/user.dbml
DIFF_DB_NAME=rtest
DIFF_OUT_SQL_PATH=./dbml/user.sql
DIFF_RUN_SQL=false
DIFF_RUN_CMD=pause

todo

  • 对比数据库的结构
  • 对比 dbml 的结构
  • dbml 的 args 解析
  • dbml 和数据库对比生成 changeItem
  • changeItem 生成 sql
  • 新增关联生成
  • 备注的对比生成
  • 默认值的对比生成
  • 备注的对比生成

依赖项

~20–35MB
~505K SLoC