MySQL数据库迁移复制到SQL SERVER数据库的方法及相关错误处理

工具:Navicat Premium 15

下载地址https://download.csdn.net/download/ioriliao/14921353

注:Navicat Premium是收费软件,但有15天试用期,对于迁移数据来说这使用期限足矣,我们是借助他的数据传输功能实现从MySQL数据库迁移到SQL SERVER数据库

特别敬告:操作前请先备份数据库!操作前请先备份数据库!操作前请先备份数据库!

使用方法:

1、点击Navicat Premium的工具->数据传输菜单

2、设置源数据和目标数据库,即源数据是待迁移的数据库,目标数据库是要迁移到的数据库;然后点击下一步即可。

3、选择需要迁移的表

最后点击开始按钮即可迁移,不过有可能会遇到一些错误,如下:

一、mysql的这种(0000-00-00 00:00:00)默认日期,这会导致迁移失败,所以得要清洗数据后才作迁移,方法见下:

1、查找出数据库所有表datetime类型的字段,然后通过CONCAT函数组装出一个UPDATE语句

SELECT
	CONCAT( 'UPDATE ', TABLE_NAME, ' SET ', COLUMN_NAME, '=\'2020-01-22\' where ', 'DATE_FORMAT(', COLUMN_NAME, ', \'%Y-%m-%d %H:%i:%s\')', '=\'0000-00-00 00:00:00\';' ) 
FROM
	information_schema.`COLUMNS` 
WHERE
	TABLE_SCHEMA = '你的数据库名字' 
	AND DATA_TYPE = 'datetime' 
ORDER BY
	TABLE_NAME,
	ORDINAL_POSITION;

2、把上面获取到的UPDATE语句放到Navicat Premium的查询窗口执行即可批量更新默认日期,示例如下:

UPDATE your_table SET add_time='2020-01-22' where add_time='0000-00-00 00:00:00';

二、mysql tinyint类型字段的值如果是负数会导致迁移到sql server失败,所以得先批量修改表tinyint类类型为int类型,方法见下:

1、查找出数据库所有表tinyint类型的字段,然后通过CONCAT函数组装出一个ALTER TABLE语句

SELECT
    CONCAT('ALTER TABLE `你的数据库名字`.`',TABLE_NAME, 
'` MODIFY COLUMN `',COLUMN_NAME,'` int(4) NULL DEFAULT NULL;')
FROM
    information_schema.`COLUMNS`
WHERE
    TABLE_SCHEMA = '你的数据库名字' and DATA_TYPE='tinyint'
ORDER BY
    TABLE_NAME,
    ORDINAL_POSITION;

2、把上面获取到的ALTER TABLE语句放到Navicat Premium的查询窗口执行即可批量更新默认日期,示例如下:

ALTER TABLE `你的数据库名字`.`admin_group` MODIFY COLUMN `is_enable` int(4) NULL DEFAULT NULL;

三、清洗表字段值没有转义的单引号,这可能是因为数据库被注入过或程序员对数据输入时没做严格限制导致的,方法见下:

1、查找出数据库所有表varchar和text类型的字段,然后通过CONCAT函数组装出一个UPDATE语句

SELECT
CONCAT('UPDATE ',TABLE_NAME,' SET ',COLUMN_NAME,'=replace(',COLUMN_NAME,',\'\\\'\',"")', ' where ',COLUMN_NAME,' like \'%\\\'%\';')
FROM
    information_schema.`COLUMNS`
WHERE
    TABLE_SCHEMA = '你的数据库名字' and (DATA_TYPE='varchar' or DATA_TYPE='text')
ORDER BY
    TABLE_NAME,
    ORDINAL_POSITION;

2、把上面获取到的UPDATE语句放到Navicat Premium的查询窗口执行即可批量更新即可,示例如下:

UPDATE your_table SET member=replace(member,'\'',"") where member like '%\'%';

注:其它类似这样的数据问题以此类推即可

至此完美解决MySQL数据库迁移到SQL SERVER数据库

如还解决不了,请加微信:tai-yi-zhen-ren

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值