我们的ASP.NET Web应用程序允许用户从Excel导入数据。我们目前托管在我们自己的服务器上,因此可以从Web服务器和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批量上传到SQL?
答案 0 :(得分: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