负责将代码优先数据库从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 Identity表上花费了大量时间以及其他问题时失败了。 .net核心api在多个地方进行了巨大的转储,因此想法就出来了。
从那时起,我将api控制器迁移到mysql,然后不得不解决与mssql fks太长相关的许多问题和其他一些问题。
因此,此时,控制器可在mysql上运行。我只需要将所有数据转储到MySQL中并保持FK一致即可。
我对此有一些想法,例如CSV export> import和/或尝试其他一些事情。有什么建议吗?
答案 0 :(得分:1)
您可以使用SqlServer Management Studio内置的数据导出向导(任务->导出数据) 或使用SSIS包来迁移数据。
答案 1 :(得分:0)
尝试过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 ++中打开数据库脚本,并使用启用了扩展搜索模式的替换功能应用以下编辑:
GO -> blank
[dbo]. -> blank
[ -> blank
] -> blank
)\r\n -> );\r\n
\r\n' -> '
DateTime2 -> DATETIME
在Notepad ++中进行编辑后,我从文本文件中删除了所有与SET,ALTER和CREATE相关的内容,然后按顺序将所有插入行复制到MySQL Workbench中以确保外键在插入该表的数据之前已经被填充。谢天谢地,没有存储过程可以处理!真是痛苦!
此外,该应用程序托管在Azure上。花了几个小时来解决API未连接到数据库的问题。起初这并不明显,因为该应用程序是假的,向Postman抛出404错误。当我第一次尝试将API控制器连接到MySQL DB时,我在Azure的App Service配置中输入了数据库连接字符串。即使在本地运行该应用程序也可以,但它根本不起作用。最终在此站点上找到另一篇文章,其中提到要摆脱“应用程序服务”>“配置”窗口中的数据库连接字符串。在那之后像冠军一样工作。带有自动递增键的所有数据都没有问题地链接在一起。
我对结果感到非常满意,并希望我再也不必经历这个过程!知道应用程序现在可以在完全开源的基础架构上运行,总是一种感觉。希望这对某人有帮助。祝你好运。