仅将表数据从MSSQL迁移到MySQL

时间:2019-04-28 09:02:10

标签: mysql sql-server entity-framework asp.net-identity

负责将代码优先数据库从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和/或尝试其他一些事情。有什么建议吗?

2 个答案:

答案 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配置中输入了数据库连接字符串。即使在本地运行该应用程序也可以,但它根本不起作用。最终在此站点上找到另一篇文章,其中提到要摆脱“应用程序服务”>“配置”窗口中的数据库连接字符串。在那之后像冠军一样工作。带有自动递增键的所有数据都没有问题地链接在一起。

我对结果感到非常满意,并希望我再也不必经历这个过程!知道应用程序现在可以在完全开源的基础架构上运行,总是一种感觉。希望这对某人有帮助。祝你好运。