2014-09-06 34 views
0

我们的ASP.NET Web应用程序允许用户从Excel导入数据。我们目前托管在我们自己的服务器上,因此可以从Web服务器和SQL服务器访问文件系统。该工艺目前是这样的:如何以编程方式将Excel文档导入到Azure SQL表中?

  1. 保存上传的文件到临时文件夹在服务器上
  2. 执行T-SQL来从文件系统到SQL临时表通过OLEDB
  3. 执行T-直接读取上传的文件根据需要SQL读取从临时表和处理数据(例如,比较现有的数据和更新/插入适当的)

第2步看起来是这样的:

Select * into #MY_TEMP_TABLE 
From OpenRowSet(
    'Microsoft.ACE.OLEDB.12.0', 
    'Excel 12.0; Database=PATH_TO_MY_UPLOADED_FILE; HDR=YES', 
    'Select * From MY_WORKSHEET_NAME%') 

与(例如)使用EPPlus将文件读入.NET数据表,然后逐行插入数据相比,这是非常快速和直接的。

我们正在开发Azure应用程序(Azure网站和SQL数据库,而不是VM)。我们可以将文件上传到blob存储并将其内容写入一个字节数组中,但之后我们仍然使用逐行处理方法,这种方法很慢并且很脆弱。

有没有一种快速的方式来以编程方式批量上传Excel到Azure中的SQL?

回答

1

我想看看来自ComponentOne之类的商业Excel组件之一。将电子表格的内容读入内存,并使用标准的ADO.Net技术将其写入Azure SQL数据库。

这可能会更可靠,您可以利用重试逻辑进行瞬态故障(http://www.asp.net/aspnet/overview/developing-apps-with-windows-azure/building-real-world-cloud-apps-with-windows-azure/transient-fault-handling)。

请注意,您需要了解Azure SQL数据库中的限制行为以及它可能如何影响您的应用程序:http://msdn.microsoft.com/en-us/library/azure/dn338079.aspx

相关问题