作者:曾经的我们太矫情_377 | 来源:互联网 | 2023-06-14 11:05
迁移的方式可能有很多种,这边因为平时接触mysql比较少一点,先做两种方式,不管用哪种方式都是会有点问题的,使用 navicat 工具(这种工具可以连接mysql,sqlserver,oracle,s
迁移的方式可能有很多种,这边因为平时接触mysql比较少一点,先做两种方式,不管用哪种方式都是会有
点问题的,使用 navicat 工具(这种工具可以连接mysql,sqlserver,oracle,sqlite,mongodb,postgreSql等
等数据库)起先使用它是因为在写字段注释的时候比sqlserver 那个 studio 方便太多,其次界面好看,但是对
于sqlserver来讲有个问题就是建好表之后字段不支持上下移动切换顺序,其他数据库可以。
目标:将sqlserver数据库连表结构和数据一起导入mysql
方法一:用navicat连接好mysql,创建好数据库,然后打开数据库,《表》右键== 导入向导
![](https://img7.php1.cn/3cdc5/cf6c/9f3/2b0c5acf21126122.png)
![](https://img7.php1.cn/3cdc5/cf6c/9f3/0247fae1a5203e68.png)
![](https://img7.php1.cn/3cdc5/cf6c/9f3/b23fb23d1474dff1.png)
![](https://img7.php1.cn/3cdc5/cf6c/9f3/bc1e2a632d8405b3.png)
![](https://img7.php1.cn/3cdc5/cf6c/9f3/613d65c68dd20d1d.png)
一直下一步到这里
![](https://img7.php1.cn/3cdc5/cf6c/9f3/421a4b7e526bbb7a.png)
点击开始就行
缺点:表主键和注释以及自增值都会丢失
优点:可以设置遇到错误继续导入不中断
方法二:同样先创建好数据库
![](https://img7.php1.cn/3cdc5/cf6c/9f3/a5257b6a02e8afad.png)
工具 - 数据传输
![](https://img7.php1.cn/3cdc5/cf6c/9f3/6e922a30c2e1d481.png)
左边是已创建好的源连接,右边是目标连接
![](https://img7.php1.cn/3cdc5/cf6c/9f3/2eaba512487dbece.png)
缺点:自增值会丢失,遇到错误即刻中断导入,最典型的是当源数据里面带有emoji表情的时候,目标数据库字符集未设置为 utfmb4的时候,会随时中断
优点:主键和注释都会保留下来
最后:给表设置自增
附上查询源数据库的自增语句辅助设置自增:
SELECT b.name TableName ,a.name ColumnName ,a.seed_value ,a.increment_value ,a.last_value FROM sys.identity_columns a INNER JOIN sys.tables b ON a.object_id = b.object_id
![](https://img7.php1.cn/3cdc5/cf6c/9f3/b89f3673a3187e45.png)
方法三:生成sql,然后把差异的语法批量替换一下,比如ms sql里面的 identity 对应mysql 的 auto_increment,
然后自增值这块语法差异太大,做起来还是麻烦的(不推荐使用这种方式,爱折腾可以试试)
文章来源于https://www.cnblogs.com/shellphen/p/13932905.html