从 MySQL 导入大量数据到 SQL Server 2008 的有效方法

从 MySQL 导入大量数据到 SQL Server 2008 的有效方法

好吧,首先,请不要评论从 MySQL 切换到 SQL Server 2008 - 我试图抵制这个决定 - 我知道这不是理想的,但这是我正在尝试做的现实。我精通 MySQL,但对 SQL Server 2008 还是新手,所以如果您对这个过程的任何部分有任何建设性的意见,请告诉我。

以下是我所做的:

  1. 通过 PHP 创建脚本,将 MySQL 数据库转储到多个与 SQL Server 2008 兼容的文件中 - 我的意思是每个表都有一个文件。每个文件都有 CREATE TABLE 和 INSERT 语句。它还包含每 200 次插入的 GO 语句,以便我可以使用 sqlcmd 导入(如果有更好的实用程序,请指出我!)
  2. 将文件复制到 SQL Server
  3. 使用 sqlcmd 命令行实用程序进行导入 - 但这非常慢!!!

200 的批量大小是任意选择的 - 如果它应该更大、更小,或者我应该在文件末尾只有一个“GO”语句,请告诉我。

文件的总大小约为1GB。

理想情况下,我希望能够在一小时内完成导入,以便依赖于数据库的网络服务器不会停机太长时间。

关于如何加快这一速度的任何建议都将非常有用!

答案1

在 Management Studio(SQL Server 的 GUI)中,您是否尝试过右键单击新数据库(或创建一个数据库),然后选择导入/导出 - 导入?这将使用 SQL Server 的一部分 SSIS,它是一种功能强大的 ETL(提取、转换、加载)工具。

您需要为 mysql 安装一个 ODBC 驱动程序,但导入数据应该相对简单 - 如果需要,您将能够在此过程中转换数据。

或者,您是否尝试过使用 Microsoft 迁移工具将数据从 mysql 导入到 SQL Server?所有供应商都提供这些工具来帮助从一个数据库切换到另一个数据库!

http://www.microsoft.com/download/en/details.aspx?id=1495

答案2

使用以下任一方法将数据加载到 SQL Server 中可能会更快:BULK INSERT http://msdn.microsoft.com/en-us/library/ms188365.aspx 或 BCP http://msdn.microsoft.com/en-us/library/ms162802.aspx

格式文件可能会很麻烦,具体取决于原始文件与表结构的匹配程度。有时,批量插入或 BCP 到暂存表,然后在上传后将数据移动到正确的位置可能会更容易。

相关内容