2012-01-10 104 views
1

我有一个客户需要将行从大型Excel文件(72K行)导入到他们的SQL Server数据库中。该文件由系统的用户上传。当我们试图在用户上传的同时尝试上传和处理这些内容时,性能就成了问题。现在我们将它保存到磁盘中,然后管理员拿起它并将其分成2K行并逐个通过上传工具运行。有没有更简单的方法来实现这一点,而不会影响性能或超时?导入到SQL Server数据库的大型Excel文件

回答

2

如果我正确理解你的问题,你会得到一个大的电子表格,并需要将它上传到SQL Server数据库。我不确定为什么你的过程目前很慢,但我认为数据量本来就不会太慢。

根据您有哪些开发工具可用,应该可以在合理的时间内将其导入。

  • SSIS可以从Excel文件读取。您可以安排定期醒来的工作并检查新文件。如果它找到该文件,那么它使用数据流任务将其导入登台表中,然后可以使用SQL任务在其中运行一些处理。

  • 如果您可以使用.Net,那么您可以编写一个应用程序,通过OLE自动化API读取数据并通过SQLBulkCopy将其加载到临时区域。您可以通过Excel COM API将整个范围读入变量数组。这不是超快的,但应该足够快,适合你的目的。

  • 如果您不介意使用VBA,那么您可以编写一个类似的宏。但是,我不认为传统的ADO具有批量加载功能。为了做到这一点,您需要导出一个.CSV或类似于可从服务器上看到的驱动器,然后从该文件中导出BULK INSERT。您还必须为输出.CSV文件创建一个bcp控制文件。

从用户提供的电子表格中无头进口总是很麻烦,所以通过桌面应用程序执行它有很多好处。主要好处是有错误报告。一个无头的工作实际上只能发送一封包含一些状态信息的电子邮件。如果您有一个交互式应用程序,用户可以对该文件进行故障排除并进行多次尝试,直到它们正确。

+0

对不起,我应该说的客户服务管理,不涉及开发管理。 – 2012-01-10 23:21:19

1

我可能是错的,但是从您的描述来看,您听起来像是在应用程序的代码中进行处理(即上传文件并处理上载的代码然后处理导入,排序依据)

无论如何,我已经成功地导入了像使用SSIS那样的大型数据集。我还设置了一个电子表格作为链接服务器,但它对我来说总是感觉有点尴尬。

看看this article详细介绍了如何用几种不同的方法,即导入数据:

  • SQL Server数据转换服务(DTS)
  • 的Microsoft SQL Server 2005集成服务(SSIS)
  • SQL Server链接服务器
  • SQL Server分布式查询
  • ActiveX数据对象(ADO)和Microsoft OLE DB提供程序SQL Server
  • ADO和Microsoft OLE DB提供程序为Jet 4.0
+0

这些中的任何一个可以连续运行吗?如果我们不断地将文件保存到磁盘上,我需要读取那些进入的文件。 – 2012-01-10 23:23:05

相关问题