将大型Excel工作表导入SQL

时间:2016-01-15 20:28:38

标签: sql-server excel sql-server-2008-r2 odbc sql-import-wizard

每月我都会给出需要导入SQL的电子表格。我通常做的是使用SQL Server导入和导出向导并导入临时表,然后我调用存储过程来完成导入过程。这一切在我的生产服务器上工作正常,并且在我的开发机器上工作正常,直到上周我完全安装了Windows 10.现在,我仍然能够导入只有几千行的小型电子表格,但是,如果我尝试从包含500,000多行数据的电子表格中导入数据,则需要花费几分钟时间来设置源码连接"和"设置目标连接"然后似乎依旧"复制"。我已经检查了日志并运行了SQL事件探查器,但没有看到有关故障的信息。我让这个过程运行了一个多小时并最终将其杀死,查看临时表并显示没有导入任何记录。数据格式很好,因为我可以毫无问题地在我的生产服务器上导入。

现在这里是踢球者......只有当我在Excel中同时打开电子表格时,我才能在我的开发服务器上导入这些大页面(请注意,对于较小的电子表格我不需要打开电子表格进行导入)。电子表格打开后,导入过程有效,但速度很慢,不是一种有效的处理方式。

有关为什么导入仅适用于小型电子表格的任何想法,除非它还在Excel中打开电子表格?

我在Windows 10 Pro和Office 2016上使用SQL Server 2008 R2。我还安装了AccessDatabaseEngine - 2007。

修改 我创建了一个SSIS包并按照建议运行它,一切都按预期工作。为了让事情更加奇怪,我浏览了导入/导出向导并选择立即运行并创建SSIS,所有内容再次按预期工作。我再次通过向导,但选择了立即运行(没有创建SSIS),它仍然挂起复制。我尝试再运行4次,每次运行时如果选择"立即运行"和#34;创建SSIS"但是每次只选择"立即运行" (没有创建SSIS)。我真的很困惑这是如何发生的,并且愿意接受更多的建议。

1 个答案:

答案 0 :(得分:0)

终于找到了解决这个问题的方法!

由于我能够在打开时导入工作表,这让我觉得我的问题是由于SQL和Excel之间的连接速度缓慢,所以我开始寻找这个方向。我在其他网站上发现了一些关于与Windows 8和Windows的慢速ODBC连接的帖子。 10.一个站点提到将驱动程序切换到" SQL Native Client" 。我选择了我的目的地" SQL Server Native Client 10.0" ,我按照建议切换到" SQL Native Client" 现在一切都按预期工作了。

我看到这两个驱动程序列为:

Driver                          Version
------------------------------------------------
SQL Native Client               2005.90.3042.00
SQL Server Native Client 10.0   2009.100.6000.34

我猜测旧版(2005) SQL Native Client 的工作原理是因为导入/导出使用了AccessDatabaseEngine - 2007。

注意:使用Windows 7或2008 Server时,使用(2009) SQL Server Native Client 10.0 导入大型电子表格时没有任何问题。这似乎只是Windows的更高版本的问题。我看到其他几个网站提到在Windows 10上使用TCP进行ODBC连接存在性能问题,他们看到了使用命名管道的显着改进。由于我的生产服务器使用TCP,我没有在我的开发机器上对命名管道进行更改,所以我无法确认,但是如果遇到这个问题,有些人会想到这一点。