我的产品是被要求运行在多种常见数据库平台下(mysql/sqlserver/oracle)下,在开发中需要严格遵循相关的规范以确保能够实现跨数据库类型的要求.(相关的要点在我的"你的系统真的因为使用hibernate就可以适应各种数据库吗? "一文中已提及).在初始开发时有一个问题是比较困扰我的团队的,我们开发的时候必定是基于某个特定的数据库开发的(比如mysql),但在测试阶段是需要在不同的数据库平台下进行兼容性测试,由于开发过程中数据库结构与种子数据变化非常快,全部编写sql方式非常浪费时间,如何能找到一种高效的数据库相互迁移的工具,是我们当时所急需的解决方案.
其实也没啥选择,比较常用的数据库迁移工具就是Sqlserver自带的DTS,这玩意在sql server数据库间进行数据导入/导出时倒确实比较好用,在不同数据库类型进行操作时,就会出多多问题,如:类型转换需手工指定/导出字段有双引号...
所以最后的选择就是自己做一个DTS好啦,思路如下:
1、选择源数据库连接与目标数据库连接
2、根据源数据库遍历所有数据库对象(表),做为基准
3、删除目标数据库所有表外键及索引、删除所有种字数据(根据约定)数据、字段均允许null
4、遍历源数据库中所有表,为目标数据库修改结构(如增删字段,字段改类型、大小)
5、将源数据库中种子数据表数据拷贝至目标数据库中
6、根据源数据库为目标数据库中的表创建外键及索引、设置是否允许为null
时间: 2025-01-02 02:16:42