2013-03-18 75 views
1

是否有任何可用的工具将数据从Excel工作表(甚至是Access)导入SQL Azure容易?我可以编写一个C#脚本(我假设现在最好的可用),但我想我会检查是否有其他工具。我有一个简单的Excel工作表导入,但它的成千上万的记录,宁愿用自动化工具来完成。数据导入 - Excel到SQL Azure?

帮助?

+0

根据[文档](http://msdn.microsoft.com/en-us/library/windowsazure/ee730904.aspx),SSIS和bcp都受支持。你已经看过他们了吗? – Pondlife 2013-03-18 18:15:21

+0

Arent那些基于控制台的工具?我想我是希望用GUI的东西 – 2013-03-18 18:19:20

+0

bcp是一个命令行工具,SSIS包是在Visual Studio中开发的。他们是否“容易”使用取决于谁在使用他们;他们不打算成为最终用户工具。 – Pondlife 2013-03-18 18:24:11

回答

4

选项1,复制和粘贴

这是一个非常粗略的解决方案,但我之前已经用它,固然与数据量较小的。只需在Excel中选择行和列,确保它们与数据库表模式相关联。复制到剪贴板。在Visual Studio中打开与数据库的连接,选择最后一个空行并粘贴。

就像我说的,一个非常粗糙的解决方案,但如果它能够工作并节省您的时间,那就很重要。先尝试一小排选择,不要忘记排除任何自动递增列。如果您先将其转换为CSV,则会将任何可能无法导入到表格架构中的Excel格式化。我必须诚实地说,我不知道这种方法如何处理更大的数据集,显然这取决于Excel文档中的数据,列的数量等。您可能需要将数据以块的形式移动,但很可能比其他方法更快。

选项2,CSV到数据表

第二种方法需要一些编码,但会给你过来的数据是如何映射到数据表中更多的控制。它基本上涉及将文档转换为Excel中的CSV,读入循环行并插入到SQL数据库表的DataTable对象。

Dim dt As DataTable = New DataTable("myData") 
Dim DataFile As FileInfo = New FileInfo("c:\myspreadsheet.csv") 

Dim MyConnection As New System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" & DataFile.Directory.FullName & "';Extended Properties='text;HDR=NO';Jet OLEDB:Engine Type=96;") 
Dim oledataAdapter As OleDbDataAdapter 
oledataAdapter = New OleDbDataAdapter("SELECT * FROM [" & DataFile.Name & "]", MyConnection) 

oledataAdapter.Fill(dt) 'Bind the csv to the data table 

'LOOP AND INSERT HERE... 
For Each DataRowObj As DataRow In dt.Rows 

Next 
+0

Azure支持Jet.OLEDB(我猜它是全部64位)? – Lalman 2015-03-23 02:53:19

+0

很可能,但如果不是的话,我想你可以使用LumenWorks CSV库。它在Nuget上可用。 – QFDev 2015-03-23 07:42:00

6

您还可以使用SQL Server导入&导出数据(32位),将数据从一个excel文件传送到SQL Azure上的表。它非常快。 确保选择目标时,它是SqlServer的.Net Framework数据提供程序。您将不得不设置数据源,用户ID,密码& Initial Catalog属性。

+0

如果我可以把它投票上千,我会的。 – gijswijs 2016-01-06 15:15:30