仅将表数据从 MSSQL 迁移到 MySQL
Posted
技术标签:
【中文标题】仅将表数据从 MSSQL 迁移到 MySQL【英文标题】:Migrate Table Data Only from MSSQL to MySQL 【发布时间】:2019-09-17 05:03:14 【问题描述】:负责将代码优先数据库从 MSSQL 迁移到 mysql。经过几个小时的功夫,我能够让 asp.net 核心项目正确部署所有迁移到 mysql。现在我需要迁移现有 mssql 表中的数据。我看到提到 MySQL Migration Toolkit 的帖子,但这似乎已经过时了。还尝试使用 MySQL Workbench 和 DBLoad 的 Data Loader 执行此操作,但没有任何运气。
表结构非常简单,使用增量整数键 + asp.net 核心识别框架 (GUID) 的常见废话。只需要在迁移过程中保持一致即可。既然在 MySQL 中设置了表结构,那么迁移数据的最佳方法是什么?任何建议将不胜感激!
更新:更多细节... 我尝试使用 MySQL WorkBench 和 DBLoader 将数据库从 MSSQL 直接迁移到 MySQL。但是在 ASP.net 身份表上失败了很多时间加上其他问题。 .net core api 在多个地方进行了大量转储,所以这个想法已经过时了。
从那时起,我将 api 控制器迁移到了 mysql,然后不得不修复与 mssql fks 太长和其他一些问题相关的无数问题。
所以此时,控制器在 mysql 上工作。我只需要将所有数据转储到 MySQL 并保持 FK 一致。
我对此有过一些想法,例如 CSV 导出>导入和/或尝试其他一些事情。有什么建议吗?
【问题讨论】:
【参考方案1】:您可以使用 SqlServer Management Studio 内置的数据导出向导(任务 -> 导出数据) 或者使用SSIS包迁移数据。
【讨论】:
【参考方案2】:试过 MySQL Workbench、DBLoad.com 的 DBLoad 等直接迁移数据,都失败了。
所以最终找到了一个“解决方案”......
首先,我修改了 ASP.net Core 项目:
//services.AddDbContext<ApplicationDbContext>(options =>
// options.UseSqlServer(
// Configuration.GetConnectionString("DefaultConnection")));
services.AddDbContext<ApplicationDbContext>(options =>
options.UseMySql(
Configuration.GetConnectionString("DefaultConnection")));
然后转到包管理器控制台并运行:update-database
这创建了 MySQL 中的所有表。
然后打开 Microsoft SQL Management Studio。右键单击数据库任务 > 生成脚本。选择了高级选项架构和数据,将所有内容保存到一个文件中。
然后在 Notepad++ 中打开 db 脚本并使用启用扩展搜索模式的替换应用以下编辑:
GO -> blank
[dbo]. -> blank
[ -> blank
] -> blank
)\r\n -> );\r\n
\r\n' -> '
DateTime2 -> DATETIME
在 Notepad++ 中进行编辑后,我从文本文件中删除了所有与 SET、ALTER 和 CREATE 相关的内容,然后以 order 将所有插入行复制到 MySQL Workbench 以确保外键在插入该表的数据之前已填充。谢天谢地,没有要处理的存储过程!图库斯是多么痛苦啊!
另外,该应用托管在 Azure 上。花了几个小时与 API 没有连接到数据库作斗争。起初这并不明显,因为该应用程序是伪造的,向 Postman 抛出 404 错误。当我第一次尝试将 API 控制器连接到 MySQL DB 时,我将数据库连接字符串输入到 Azure 的应用服务配置中。即使在本地运行应用程序工作正常,它也根本不起作用。最后在此站点上找到另一篇文章,提到要从应用服务 > 配置窗口中删除数据库连接字符串。在那之后像冠军一样工作。所有带有自动递增键的数据都毫无问题地链接起来。
我对结果非常满意,希望我再也不必经历这个过程!知道应用程序现在运行在完全开源的基础架构上总是一种很好的感觉。希望这可以帮助某人。祝你好运。
【讨论】:
在 microsoft 服务器上添加一个链接 derver 到 mysql 。您需要 mysql 工作台或 mssql 框上的 mysql odbc 驱动程序。在此构建脚本之后,通过链接服务器填充数据。这不是一个快速的过程。如果您需要真正快速的东西,可以使用 informatica、aws dms、apache sqoop 和 Ssis 等解决方案以上是关于仅将表数据从 MSSQL 迁移到 MySQL的主要内容,如果未能解决你的问题,请参考以下文章