将大表从 MySql 迁移到 MsSql

Posted

技术标签:

【中文标题】将大表从 MySql 迁移到 MsSql【英文标题】:Migrate big tables from MySql to MsSql 【发布时间】:2014-09-03 18:54:26 【问题描述】:

我有一个大约 46GB 的 mysql 格式的大数据库,我设法将所有数据库转换为 MSsql,除了两个表,最大的表。当我尝试逐个迁移这两个表时,一段时间后我收到错误消息“连接已被禁用”

我将 SSMA 选项的超时时间从 15 增加到 1440,并将 bash 从 1000 减少到 500,同样,这些表有 52 百万行和 1.1 亿行,分别为 1.5 GB 和 6.5 GB。

我尝试了增量版本,但我没有唯一的 ID 可供使用

我可以做些什么来迁移它们

谢谢

【问题讨论】:

您是否尝试将数据导出到文件中,然后在新数据库中重新导入? 因为大表行没试过,我认为csv有可以有多少行的限制 @GordonLinoff - 在这个阶段添加一个标识列会有帮助吗? CSV 文件中的行数没有限制。某些 CSV 工具中的行数存在限制(或资源限制)。应该很容易输出你所有的数据。如果由于某种原因您不能在 MySql 中使用本机 CSV 导出,则通过一个小型客户端应用程序在 2 个大表中。 ariejan.net/2008/11/27/export-csv-directly-from-mysql 显示从 MySql 直接导出到 CSV。 BCP Sql server 中的文件应该没有问题 如果中间 CSV 文件的大小有问题,您不能只通过 管道 传输转储吗? 【参考方案1】:

您应该能够使用 SQL Server Integration Services (SSIS)。您可以创建一个从 MYSql 中提取数据并将数据转储到 MSSQL 的数据流。

您需要创建一个包含 OLE 数据库源的数据流任务并将其连接到 OLE 数据库目标。

【讨论】:

我已经尝试过这个软件,但没有运气,你能解释一下怎么做吗? 在 Visual Studio 中创建一个新的“集成服务项目”。 在 Visual Studio 中创建一个新的“集成服务项目”。在 Control Flow 选项卡中,从左侧的 Toolbox(或 View>Toolbox)添加“Data Flow Task”。双击数据流任务。现在拖动 ADO.NET Source 并双击它,为 Provider 的 MySql 服务器(使用 MySQL 数据提供程序)创建一个新连接。 (可以在此处找到 MySQL 数据提供程序:blogs.msdn.com/b/mattm/archive/2008/03/04/…)一旦建立连接,将 ADO.NET 源指向您的 Source DB,并对 SQL 服务器执行相同操作(使用 OLE DB 而不是 ADO.NET。 其实好像 MySQL 提供了一个 ADO.net 驱动:dev.mysql.com/downloads/connector/net【参考方案2】:

我在使用 SSMA 时遇到了同样的问题。我设法迁移了一个包含 40 多列的表的 100+ 百万行。

我假设您已经很好地完成了配置。 您需要确保 MSSQL 数据库中没有活动。没有对这些表进行 SELECTS,也没有任何其他活动。

检查这两个表的结构以确保它们正常。您只能为这两个表运行 SSMA 项目。

希望这会有所帮助。

【讨论】:

【参考方案3】:

我遇到了同样的问题,并通过使用此处详细描述的以下配置进行了修复:MySql 5.6 to MSSql server 2014 migration : ExecuteReader requires an open and available Connection

另外,我在这里记录了整个 MySQL 到 MSSQL 的迁移过程:Migrate Data and Schema from MySQL to SQL Server

【讨论】:

以上是关于将大表从 MySql 迁移到 MsSql的主要内容,如果未能解决你的问题,请参考以下文章

MySQL8数据迁移大表捷径【表空间迁移】

MySQL 大表迁移

仅将表数据从 MSSQL 迁移到 MySQL

MSSQL 到 MySQL 数据库迁移

Mssql 2012 与 PHP & Mysql 到 Mssql 迁移

从 MSSQL 迁移到 MYSQL 错误 1064 MYSQL Workbench