2013-03-18 104 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