2008-12-17 117 views

回答

0

導入嚮導確實提供了該選項。您可以使用該選項爲要導入的數據編寫自己的查詢,也可以使用複製數據選項並使用「編輯映射」按鈕忽略不想導入的列。

+0

它沒有給我一個選擇導入到現有的表,只是數據庫,它會創建一個新表。 (SQLServer 2008) – user47206 2008-12-17 21:04:56

+0

找到如何工作。謝謝。現在我發現了一個更大的proplem。我正在使用Management Studio 2008,數據庫是2000.我錯誤地認爲它是2005. – user47206 2008-12-18 16:09:40

+0

我還沒有使用過管理工作室2008(我們正在運行2005)。管理工作室2005是向下兼容2000. – NYSystemsAnalyst 2008-12-18 21:37:59

24

Microsoft suggest幾種方法:

  • SQL Server數據轉換服務(DTS)
  • 的Microsoft SQL Server 2005集成服務(SSIS)
  • SQL Server鏈接服務器
  • SQL Server分佈式查詢
  • 用於SQL Server的ActiveX數據對象(ADO)和Microsoft OLE DB提供程序
  • ADO和Microsoft OLE DB提供程序爲Jet 4.0

如果嚮導(DTS)不工作(我認爲它應該),你可以嘗試這樣的事情http://www.devasp.net/net/articles/display/771.html這基本上意味着做這樣的事情

INSERT INTO [tblTemp] ([Column1], [Column2], [Column3], [Column4]) 

SELECT A.[Column1], A.[Column2], A.[Column3], A.[Column4] 
FROM OPENROWSET 
('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:\Excel.xls;HDR=YES', 'select * from [Sheet1$]') AS A; 
+0

嗯。這表明我必須在服務器上勝出,而不是使用我的電腦。有沒有辦法將它導向我的電腦?我還沒有找到答案。 – user47206 2008-12-18 16:04:04

+0

當我嘗試這樣做時,出現錯誤'FROM子句中的語法錯誤。 (Microsoft Jet數據庫引擎)」 – Techboy 2011-12-11 16:48:38

+1

不幸的是,這似乎並沒有在64位Windows工作 – 2012-10-25 20:00:25

7

你可以使用OPENROWSET,像:

SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
    'Excel 8.0;IMEX=1;HDR=NO;DATABASE=C:\FILE.xls', 'Select * from [Sheet1$]' 

只要確保日e路徑是服務器上的路徑,而不是本地機器。

3

通過'the wiz'我假設你在談論'SQL Server導入和導出嚮導'。 (我也很新,所以我不明白大多數問題,更不用說大多數答案,但我認爲我得到了這個答案)。如果是這樣,你不能拿電子表格或其副本,刪除你不想導入的列,然後使用嚮導?

我一直髮現有能力做我需要的東西,我只在SQL Server 2000上(不知道其他版本有什麼不同)。

編輯:其實我現在正在看它,我似乎能夠選擇哪些列我想映射到現有表中的哪些行。在「選擇源表格和視圖」屏幕上,我查看我正在使用的數據表,選擇「目的地」,然後單擊「編輯...」按鈕。從那裏你可以選擇Excel列和表列來映射它。

12

這可能聽起來像很漫長,但你可能想看看使用Excel to generate INSERT SQL代碼,你可以通過查詢分析器創建你的表。

運作良好,如果你不能使用嚮導,因爲Excel文件是不是在服務器上

2

Microsoft Access是另一種選擇。您可以在本地機器上安裝Access數據庫,將Excel電子表格導入(嚮導可用)和link to the the SQL Server database tables via ODBC

然後,您可以設計一個訪問查詢,將Excel電子表格中的數據附加到SQL Server表中。

50

連接到Sql Server 2005數據庫後,從對象資源管理器窗口右鍵單擊要將表導入到的數據庫。選擇任務 - >導入數據。 這是一個簡單的工具,可以將輸入數據「映射」到適當的表格中。 您可以保存腳本以在需要時再次運行。

0

的Excel + SQLCMD +的Perl = exceltomssqlinsert

,您可以使用您的Excel作爲頭端以MSSQL數據庫...注意將truncate table在每個生成的SQL INSERT文件的開頭...

4
go 
sp_configure 'show advanced options',1 
reconfigure with override 
go 
sp_configure 'Ad Hoc Distributed Queries',1 
reconfigure with override 
go 
SELECT * into temptable 
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
       'Excel 8.0;Database=C:\Documents and Settings\abhisharma\Desktop\exl\ImportExcel2SQLServer\ImportExcel2SQLServer\example.xls;IMEX=1', 
       'SELECT * FROM [Sheet1$]') 

select * from temptable 
4

另一種選擇是在Excel中使用VBA,並編寫一個宏來解析電子表格數據並將其寫入SQL。

一個例子是在這裏:http://www.ozgrid.com/forum/showthread.php?t=26621&page=1

Sub InsertARecord() 
Dim cnt As ADODB.Connection 
Dim rst As ADODB.Recordset 
Dim stCon As String, stSQL As String 
Set cnt = New ADODB.Connection 
Set rst = New ADODB.Recordset 

stCon = "Provider=MSDASQL.1;Persist Security Info=False;Data Source=JOEY" 
cnt.ConnectionString = stCon 
stSQL = "INSERT INTO MyTable (Price)" 
stSQL = stSQL & "VALUES (500)" 

cnt.Open 
rst.Open stSQL, cnt, adOpenStatic, adLockReadOnly, adCmdText 

If CBool(rst.State And adStateOpen) = True Then rst.Close 
Set rst = Nothing 
If CBool(cnt.State And adStateOpen) = True Then cnt.Close 
Set cnt = Nothing 

End Sub 
0

我已經使用DTS(現在稱爲SQL Server導入和導出嚮導)。我用了這個tutorial甚至在SQL 2008年爲我工作的偉大和Excel 2010(14.0)

我希望這有助於

-D

0

首先,嘗試導入嚮導的32位版本。這顯示了更多支持的導入格式。

背景: 所有這些都取決於您的Office(Runtimes Engines)安裝。

如果您沒有安裝Office 2007或更高版本,導入嚮導(32位)僅允許您導入Excel 97-2003(.xls)文件。

如果您安裝了Office 2010和geater(也包含64位,不推薦),導入嚮導還支持Excel 2007+(.xlsx)文件。

爲了得到一個概述在運行時看到'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine

相關問題