SQL Server 数据迁移 为MySQL 注意事项及导入方法、出错解决

1、类型转换

SQL Server MySQL
varchar(max)类似可变字符串 text
timestamp(里面有1970以下) dataTime(可以是1900以上)
tinyint(0-255) tinyint(无符号)(在设计表里面字段需要把无符号打钩)
uniqueidentifier(16字节的二进制) 可以对应用一个,我用的char
smalldatetime(1900/1/1~2079/6/6) detetime(1000-01-01 -9999-12-31 )
nvarchar可变长度(utf-8) varchr(根据自己业务设置一个长度把)
varchar可变长度(unicode) var的65535不够就用text也可以
ntext可变长度(unicde) longtext
   
   
   
   
   
   

2、数据迁移采用的Navicat Premium,

a)、在MySQL中创建SQLServer对应数据库(例如:assisdata)

b)、选中SQLServer中迁移数据库右键->数据传输->如下图

SQL Server 数据迁移 为MySQL 注意事项及导入方法、出错解决_第1张图片

c)、选择高级

SQL Server 数据迁移 为MySQL 注意事项及导入方法、出错解决_第2张图片

d)、SQL Server 数据迁移 为MySQL 注意事项及导入方法、出错解决_第3张图片

确定即可开始。

SQL Server 数据迁移 为MySQL 注意事项及导入方法、出错解决_第4张图片

 

 

PS:迁移数据出现问题,

1、{

[Err] [Imp] 1366 - Incorrect string value: '\xF0\x9F\x98\x84' for column 'Content' at row 2

编码集问题,由于emoji表情是4个字节。而urf-8是最多3个字节

 就修改mysql的配置文件

win系统默认安装位置:C:\ProgramData\MySQL\MySQL Server 5.7/my.ini

linux系统默认安装位置:/ect/mysql/my.cnf

a)、修改my.cnf 或 my.ini里面的配置:

[mysqld]

character-set-server=utf8mb4

[mysql]

default-character-set=utf8mb4

修改完成后重启mysql

win的命令
net stop mysql
net start mysql


linux命令
service mysql stop
service mysql start

 

##如果win这个命令不可以,就可以直接进入计算机管理-本地服务进行关闭开启

SQL Server 数据迁移 为MySQL 注意事项及导入方法、出错解决_第5张图片

 

b)、运行下面语句 把表修改为utf8mb4  字段也要改的哦

alter table 表名字  convert to character set utf8mb4 collate utf8mb4_bin;

查看是否配置成功:show variables like '%character%';

SQL Server 数据迁移 为MySQL 注意事项及导入方法、出错解决_第6张图片

2、{

迁移表失败,未创建

a)、SQLServer中表有2个主键,那么迁移得时候回出现表创建失败,所以这里迁移就别迁移主键。到时候手动创建主键。记得主键都是有长度限制得,例如varchar主键不能超过960得长度等等

b)、

3、{

迁移thnyint字段时 部分数据失败

a)、原因是thnyint 在sqlserver中是0-255范围。而迁移得时候mysql得thnyint默认字段是-127~128范围,所以需要在字段中把无符号勾选就可以了,因为mysql中得thnyint无符号范围是0-255

PS:基本我在迁移得时候就遇到这些问题,如果还有我没遇到得问题,可以留言互相交流学习。毕竟每一个技术都有很多东西值得我们去探讨研究。

 

★★再来一个方法,如果保存表情还是不能转移,采用以下方式

a)、直接选中需要转移得SQLserver 右键-数据传输-->>进入下面页面

SQL Server 数据迁移 为MySQL 注意事项及导入方法、出错解决_第7张图片

b)、在导入得sql打开(如果文件太大最好用软件打开不然卡死哦),在文件开头加一个sql即可。

SQL Server 数据迁移 为MySQL 注意事项及导入方法、出错解决_第8张图片

★★★★★注意:执行添加之前记得在sql里面加入以下得语句(导出sql别开启事务、完整插入、延迟插入等设置)

SQL Server 数据迁移 为MySQL 注意事项及导入方法、出错解决_第9张图片

 

按照这个来做得话基本可以完美转移(如果真的不行就换个软件吧不用Navicat Premium,用sqllog等完善的工具,有的时候工具在拿到数据解析的时候就没解析好也可能哈)

你可能感兴趣的:(——【SQLServer】,•,数据库)