0x00 问题背景
用设计PowerDesigner设计好了MYSQL的表结构,但是某个系统采用的是SQLServer数据库,也需要用到这些表,那么如何省时省力地迁移到SQLServer数据库呢,笔者尝试了各种各样的方式,最后发现方法十分简单有些舍近求远了。
0x01 使用Navicat
Navicat支持将各种数据库结构相互迁移,以前有用Navicat将SqlLite数据库转换成MySQL数据库,所以应该也是支持MySQL转SQLServer的。
不过,当下载新版的使用后,突然感觉没那么熟悉了,一下找不到入口,可能是打开的姿势不对。
而且以前使用Navicat进行数据库转移时也遇到过表结构属性丢失的问题,所以也不抱太大希望。
0x02 使用Microsoft SQL Server Migration Assistant for MySQL
下载安装
SSMAforMySQL_8.0.0.msi
mysql-connector-odbc-5.3.12-winx64.msi
源数据结构存放在MySQL的test数据库里比如为表a,转换后到了schemas.test.a处,好吧我对SQLServer数据库不熟,只会操作dbo.a,怎么把表a弄到dbo里是个问题。。。狗带!
0x03 PowerDesigner的强悍
一开始也考虑过直接使用PowerDesigner生成的SQL语句建表,而且也支持将MySQL模式切换为SQLServer模式,如下图:
虽然我安装的是SQLServer 2017,不过向下是兼容的
预览SQL语句变成了SQLServer语法
实际上一开始就是这么做的,不过把这些SQL语句复制到HeiDiSQL里运行,会报如下错误:
"go"附近有语法错误
那时在Microsoft SQL Server Management Studio 17数据库管理工具里运行也是这样的错误,打开的姿势还是不对,所以才去寻求上面提到的方法的。
后来在一同胡搞下,竟然顺利执行了!太神奇了 囧
如下图,新建查询编辑器窗口,然后执行上面的一堆乱七八糟的建表代码,Bingo~: