的任务是将代码优先数据库从MSSQL移动到MySQL。经过几个小时的功夫,我能够让 asp.net 核心项目将所有迁移正确部署到 mysql。现在我需要迁移现有 mssql 表中的数据。我看到提到MySQL迁移工具包的帖子,但这似乎很旧。也尝试使用MySQL Workbench和DBLoad的数据加载器来做到这一点,但没有任何运气。
表结构非常简单,使用增量整数键 + 使用核心识别框架 (GUID) asp.net 通常的废话。只需要在迁移过程中保持一致即可。既然表结构是在 MySQL 中设置的,那么迁移数据的最佳方法是什么?任何建议将不胜感激!
更新:更多细节... 我尝试使用MySQL WorkBench和DBLoader将数据库从MSSQL直接迁移到MySQL。但在 ASP.net 身份表上失败了,加上其他问题。.NET Core API在多个地方进行了巨大的转储,因此这个想法已经消失了。
从那时起,我将 api 控制器迁移到 mysql,然后不得不修复与 mssql fks 太长和其他一些问题相关的无数问题。
所以在这一点上,控制器在mysql上工作。我只需要将所有数据转储到 MySQL 中并保持 FK 一致。
我对它有一些想法,例如CSV导出>导入和/或尝试其他一些事情。有什么建议吗?
可以使用 SqlServer Management Studio 内置的数据导出向导(任务 ->导出数据) 或使用 SSIS 包迁移数据。
尝试MySQL Workbench,DBLoad从 DBLoad.com 等直接迁移数据,但它们都失败了。
所以最终找到了"解决方案"...
首先,我修改了 ASP.net 核心项目:
//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。右键单击数据库任务>生成脚本。将所有内容保存到一个文件中,并选择了高级选项架构和数据。
然后在记事本++中打开数据库脚本,并使用启用"替换为扩展搜索模式"应用以下编辑:
GO -> blank
[dbo]. -> blank
[ -> blank
] -> blank
)rn -> );rn
rn' -> '
DateTime2 -> DATETIME
在Notepad++中进行编辑后,我从文本文件中删除了所有与SET,ALTER和CREATE相关的内容,然后将所有插入行复制到MySQL Workbench中,以确保在插入该表的数据之前已经填充了外键。谢天谢地,没有存储过程要处理!象牙真痛!
另外,附带说明一下,该应用托管在 Azure 上。花了几个小时与未连接到数据库的 API 作斗争。起初这并不明显,因为该应用程序是假的,向邮递员抛出 404 错误。首次尝试将 API 控制器连接到 MySQL 数据库时,我在 Azure 的应用服务配置中输入了数据库连接字符串。即使在本地运行应用程序工作正常,它也根本不起作用。最终在此站点上找到了另一篇文章,提到从"应用服务>配置"窗口中删除数据库连接字符串。在那之后像冠军一样工作。所有数据及其自动递增键链接起来没有问题。
我对结果非常满意,希望我再也不必经历这个过程!知道应用程序现在在完全开源的基础架构上运行总是一种很好的感觉。希望这对某人有所帮助。祝你好运。