如何把sqlserver数据迁移到mysql数据库及需要注意事项
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何把sqlserver数据迁移到mysql数据库及需要注意事项相关的知识,希望对你有一定的参考价值。
在Navicat for mysql 管理器中,创建目标数据库(注意:因为是点对点的数据导入,要求sql server 中要导出的数据库名称和要导入到Mysql 中的数据库的名字相同)
点击创建好的目标数据库website点的”表“一项,在右边会出现导入向导选项。
选择SQL Server数据库ODBC,“下一步”,数据链接属性-SQL SERVER ODBC
创建访问SQL SERVER ODBC。
回到导入向导中发现,已经可以查看到SQL Server源数据库中所有的表,选择需要导入的表。
点击下一步,查看当前每个表中字段的数据属性是否正确,如有问题可以进行调整(sql server中有部分字段用途相同,但是名称不同,注意修改,否则会导入失败)
选择“添加”-》“下一步”-》“开始导入”,就可以了, 参考技术A
caching_sha2_password认证插件提供更多的密码加密方式,并且在加密方面具有更好的表现,目前MySQL 8.0选用caching_sha2_password作为默认的认证插件,MySQL 5.7的认证插件是MySQL_native_password。如果客户端版本过低,会造成无法识别MySQL 8.0的加密认证方式,最终导致连接问题。
MySQL存储引擎现在负责提供自己的分区处理程序,而MySQL服务器不再提供通用分区支持,InnoDB和NDB是唯一提供MySQL 8.0支持的本地分区处理程序的存储引擎。 如果分区表用的是别的存储引擎,存储引擎必须进行修改。要么将其转换为InnoDB或NDB,要么删除其分区。通过MySQLdump从5.7获取的备份文件,在导入到8.0环境前,需要确保创建分区表语句中指定的存储引擎必须支持分区,否则会报错。
MySQL 8.0的默认字符集utf8mb4,可能会导致之前数据的字符集跟新建对象的字符集不一致,为了避免新旧对象字符集不一致的情况,可以在配置文件将字符集和校验规则设置为旧版本的字符集和校验规则。
MySQL 8.0启动使用的lower_case_table_names值必须跟初始化时使用的一致。使用不同的设置重新启动服务器会引入与标识符的排序和比较方式不一致的问题。
< lower_case_table_names >
https://dev.mysql.com/doc/refman/8.0/en/server-systemvariables.html#sysvar_lower_case_table_names
要避免MySQL 8.0上的启动失败,MySQL配置文件中的sql_mode系统变量不能包含NO_AUTO_CREATE_USER。
从MySQL 5.7.24和MySQL 8.0.13开始,MySQLdump从存储程序定义中删除了NO_AUTO_CREATE_USER。必须手动修改使用早期版本的MySQLdump创建的转储文件,以删除NO_AUTO_CREATE_USER。
在MySQL 8.0.11中,删除了这些不推荐使用的兼容性SQL Mode:DB2,MAXDB,MSSQL,MySQL323,MySQL40,ORACLE,POSTGRESQL,NO_FIELD_OPTIONS,NO_KEY_OPTIONS,NO_TABLE_OPTIONS。从5.7到8.0的复制场景中,如果语句使用到废弃的SQL Mode会导致复制异常。
在执行到MySQL 8.0.3或更高版本的in-place升级时,BACKUP_ADMIN权限自动授予具有RELOAD权限的用户。
本文对MySQL 5.7到MySQL 8.0的升级过程中出现部分易出现问题进行整理:升级对MySQL版本的要求、升级都做了哪些内容、数据库升级做了哪些步骤以及注意事项,希望对大家版本升级有帮助。
Server,后来把存储的数据库调整为MySQL,所以需要把SQL
Server的数据迁移到MySQL。下面是小编日常整理的一种sqlserver数据库迁移的方法。
一、SQL
Server中常用数据类型与MySQL不同的地方
二、将SQL
Server数据迁移到MySQL需要注意的一些问题
1、唯一索引的不同,sql
server的唯一索引的字段只能允许存在一个null值,而mysql,一直oracle中唯一索引对应的字段都允许存在多个null值。
2、存储过程的语法存在很大的不同,存储过程的迁移是最麻烦的,需要仔细修改。
3、程序中部分写的SQL语句由于语法的不同也要相应的修改。
三、将SQL
Server数据迁移到MySQL的常见方法
1、使用
SQLyog
迁移
优点
该迁移方法很简单,灵活,迁移时,可以进行字段的修改,比如在sql
server中原来是datetime,然后迁移到mysql时你可以配置成timestamp;成功率很高;
缺点
迁移很慢!这是该方法最大的缺点,如果表的数据量达到几十万行,甚至几百万行,你会发现迁移起来真的很慢。明显比其他迁移方法慢很多。
2、使用
powerdesigner
和
sql
server
的脚本导出功能
来迁移
(1)、该方法首先使用
powerdesigner,对sql
server数据库,进行逆向工程,得到E-R图,然后生成MySQL的建表语句。完成数据库结构的迁移;当然表结构的迁移,不使用
powerdesigner一样也是可以的。比如我将表结构导出成语句,然后手动进行修改,然后在MySQL中运行,也是一样的;
(2)、然后使用
sql
server的工具
SSMS,将sql
server数据库中的表的数据,导出成insert语句,每个表对应导出一个文件,然后对文件进行一些处理,然后导入到MySQL数据库中。
3、使用Oracle
MySQL
Server
官方的
workbeach
工具进行迁移
(1)、在workbench
连接sql
server时,用户需要有
view
any
database
的权限。不然workbench无法访问sql
server的表结构的元数据,从而无法进行迁移。
(2)、还有使用
Navicat
来进行迁移的方法,方法和
SQLyog
是类似的。
将ABP的数据库从SQLSERVER迁移到MySql
摘要:之前跟着网上的一些教程,学习了一点ABP的知识。最近想说把默认的SQLSERVER数据迁移到mysql吧
首先网上搜一波
安装MySql.Data.Entity
然后你需要安装 MySql.Data.Entity和 MySql.Data 到你的 .EntityFramework 和 .Web 项目。然后你还需要修改 .Web 项目的web.config文件。
打开你的DbContext的配置类(Configuration.cs),并在该类的构造函数中使用下面的代码:
SetSqlGenerator("MySql.Data.MySqlClient", new MySql.Data.Entity.MySqlMigrationSqlGenerator());
配置连接字符串
为了能够使用MySQL数据库,你需要修改web.config文件中的连接字符串。如下所示:
<add name="Default" connectionString="server=localhost;port=3306;database=sampledb;uid=root;password=***" providerName="MySql.Data.MySqlClient"/>
重新生成迁移文件
在下载启动模板的时候,如果你选择了包含 Module Zero。这里会有一些迁移文件会包含在你的项目中,但是这些文件是为Sql Server迁移使用的。请打开 .EntityFramework 项目中的Migrations文件夹,然后删除这些迁移文件。迁移文件是以时间戳开始的。迁移文件的名字像这样:201506210746108_AbpZero_Initial。
在删除所有的迁移文件后,选择你的 .Web 项目为开始项目,打开VS的包管理控制台,并在包管理控制台中选择 .EntityFramework 项目作为默认项目。然后在控制台中执行下面命令:
Add-Migration "AbpZero_Initial"
现在你可以使用下面命令来创建数据库:
Update-Database
一,OK 按照上述操作一波,,纳尼,出现了以下问题
然后在网上各种搜,都没有搜到有用的内容。最后google到了一个相关内容
难道是最新版本的问题。果断降版本到6.8.8 果然没有再出违反安全规则的问题。
版本6.8.8跟6.9.10都没有问题。
以上是我踩到的第一个坑
二,下面一个是The provider did not return a ProviderManifestToken string,这又是咋滴。。习惯性又搜一波。发现网上说啥的都有。。那就中断一下看看innerexception吧。在innerexception中的信息
拒绝了访问。难道是密码错了。。。最后发现真的是密码错了(没办法。好就之前装的mysql,用了一次之后就吃土了。。)
最后update-database。
以上。。。欢迎批评指正
以上是关于如何把sqlserver数据迁移到mysql数据库及需要注意事项的主要内容,如果未能解决你的问题,请参考以下文章
如何把sqlserver数据迁移到mysql数据库及需要注意事项
如何把sqlserver数据迁移到mysql数据库及需要注意事项