将数据库从sqlserver迁移到mysql
说明:本篇仅仅代表本人遇到的情况,不保证适用于所有的场景
1、数据迁移
使用navicat进行数据传输。首先新建一个mysql数据库,用来作为目标库,然后使用navicat的迁移工具
然后选择源库和目标库:
点击下一步:
可以看到这种方式是不能导出表和序列的。在mysql中没有序列这种说法,我们可以通过另外的方式比如函数来实现序列的效果。
2、实现序列效果
数据的迁移很简单,毕竟基本都是用的同一套标准。主要是在项目中对数据库的连接方式和xml中的sql改造。
我们可以先看一下在sqlserver中序列的使用:
可以看到在插入的时候,folderId字段使用了序列 SEQ_INFO_FOLDER 的值,使用的语句是:
select next value for SEQ_INFO_FOLDER
但是在mysql中没有序列,我们可以先在mysql数据库中创建一张表sys_sequence表(名字可以自己随便取),添加两个字段
用来模拟序列的名称和值。
然后再自定义函数:
currval():
CREATE DEFINER=`root`@`%` FUNCTION `currval`(`name` text) RETURNS decimal(10,0)
begin
declare value Integer;
set value = 0;
select seq_value into value
from sys_sequence
where seq_name = name collate utf8_general_ci;
if(