我需要從Excel導入數據到我的數據庫。我需要將我的Excel工作表中的數據插入到數據庫中的現有表中。將excel數據導入到SQL Server 2008中
我試圖在sql嚮導的幫助下導入數據。首先我將它導入臨時表中,然後使用插入查詢將數據導入到目標表中。但它似乎沒有正常工作。
因此,PLZ建議我導入數據的好方法。而且如果你建議使用一些好的sql腳本來導入會更好。
我需要從Excel導入數據到我的數據庫。我需要將我的Excel工作表中的數據插入到數據庫中的現有表中。將excel數據導入到SQL Server 2008中
我試圖在sql嚮導的幫助下導入數據。首先我將它導入臨時表中,然後使用插入查詢將數據導入到目標表中。但它似乎沒有正常工作。
因此,PLZ建議我導入數據的好方法。而且如果你建議使用一些好的sql腳本來導入會更好。
你沒有提到有關現有表和表鍵什麼,excel文件,所以只給你一推,以下命令選擇從xltest.xls文件表中的所有數據(「customrs」)
SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:\test\xltest.xls', [Customers$])
從這一點來看,它取決於您的數據庫結構如何導入/合併到現有的數據。
我試着用以前的答案上.xlsx
文件(版本14.0.6112.2500 64位Microsoft Excel文件)
SELECT *
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:\xls_to_sql\xltest.xlsx', [Sheet1$])
我然後保存電子表格作爲.xls
(97-2003版本),並試圖再次。
SELECT *
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:\xls_to_sql\xltest.xls', [Sheet1$])
機器人的時候,我得到了相同的錯誤消息:
Msg 7308, Level 16, State 1, Line 1
OLE DB provider 'Microsoft.Jet.OLEDB.4.0' cannot be used for distributed queries because the provider is configured to run in single-threaded apartment mode.
SQL Server的信息:
微軟SQL Server Management Studio中10.50.1617.0微軟 Analysis Services的客戶端工具10.50.1617.0 Microsoft數據訪問 組件(MDAC)6.1.7601.17514 Microsoft MSXML 2.6 3.0 6.0 Microsoft Internet Explorer 9.0.8112.16421 Mi crosoft的.NET Framework 2.0.50727.5448操作系統6.1.7601
我沒有Microsoft.Jet.OLEDB.4.0或至少我不知道如何得到它。如果這是問題的原因,我也不知道如何在32位模式下運行所有內容。如果我因爲某種原因沒有安裝它,我將不勝感激以32位模式運行的幫助,並且還下載和安裝Microsoft.Jet.OLEDB.4.0。
我嘗試了我看到的針對SQL Server 2005發佈的鏈接服務器方法,但本教程中沒有提到Microsoft.Jet.OLEDB.4.0選項。見http://support.microsoft.com/kb/321686。
首先將電子表格保存爲.xls(97-2003版本)格式並將其導入到臨時文件中的SQL中。導入這些數據後,請確保臨時表字段長度與原始字段相似。
然後輸入如下語句來更新原單表
insert into orginal (field1, field2)
select field1, field2 from temp
有三種方式,我通常做到這一點。
bcp [dbname].[dbo].[myTableName] in data1.csv -T -SmyServerName -c -t^| > log1.txt
對於文件Excel 2007中的版本(* .xlsx)格式
INSERT INTO MyTable
SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;Database=D:\test.xlsx', [Customer$])
對於文件練成97-2003版本(的* .xls)
INSERT INTO MyTable
SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=D:\test.xls', [Customer$])
什麼是[客戶$] – 2013-03-03 07:15:52
@AlirezaMassali [客戶$]是來自文件test.xls的工作表名稱 – Fauzi88 2013-03-04 09:06:32
如果您需要導入的.xlsx到64位SQL Server,嘗試安裝64 Microsoft Access數據庫引擎。
見http://www.microsoft.com/en-us/download/details.aspx?id=13255
例如,要導入C數據:\ data.xlsx,其中有一個叫MyData的表,那麼你可以使用:
SELECT *
FROM OPENROWSET ('Microsoft.ACE.OLEDB.12.0'
, 'Excel 12.0;database=c:\data.xlsx;IMEX=1'
, 'SELECT * FROM [MyData$]')
多少列在電子表格中? – Sparky 2012-01-11 05:46:56
你是什麼意思的「一些什麼不好」?有什麼工作嗎? – Blanthor 2012-05-15 14:30:38