从MySQL导入大量数据到SQL Server 2008的高效方式

好的,开始之前,请不要评论从MySQL到SQL Server 2008的切换 – 我试图抵制这个决定 – 我知道这不是理想的,但这是我正在尝试做的事情的现实。 我能胜任MySQL和SQL Server 2008的新手,所以如果你对这个过程有任何build设性的意见,请告诉我。

以下是我所做的:

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

200的批量大小是任意select的 – 如果这应该是更大,更小,或者如果我应该只有一个单一的“GO”声明在文件的末尾,让我知道。

文件的总大小约为1GB。

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

任何关于如何加快速度的build议都会很棒!

在Management Studio中,SQL Server的GUI是否尝试了右键单击新数据库(或创build一个),然后select“导入/导出 – 导入”? 这将使用称为SSIS的SQL Server的一部分,这是一个有效的ETL(提取,转换,加载)工具。

你将需要为mysql安装一个ODBC驱动程序,但是导入数据应该是相对直接的 – 如果需要的话,你可以转换数据。

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

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

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

格式文件可能会很痛苦,这取决于你的原始文件与表结构的匹配程度。 有时,将BULK INSERT或BCP放入临时表中可能更容易,然后在上载后将数据移到正确的位置。