it-swarm.com.de

Importieren Sie Excel-Tabellenspalten in die SQL Server-Datenbank

Ich habe eine Excel-Tabelle, die ausgewählte Spalten in meine SQL Server 2008-Datenbanktabelle importieren soll. Der Assistent bot diese Option nicht an.

Gibt es einfache Code-Optionen?

64
user47206

Sobald Sie mit der SQL Server 2005-Datenbank verbunden sind, klicken Sie mit der rechten Maustaste im Objekt-Explorer-Fenster auf die Datenbank, in die Sie die Tabelle importieren möchten. Wählen Sie Aufgaben -> Daten importieren ... aus. Dies ist ein einfaches Werkzeug, mit dem Sie die eingehenden Daten in die entsprechende Tabelle einfügen können.

50
Tejas

Microsoft schlägt vor mehrere Methoden:

  • SQL Server Data Transformation Services (DTS)
  • Microsoft SQL Server 2005 Integration Services (SSIS)
  • SQL Server-Verbindungsserver
  • SQL Server verteilte Abfragen
  • ActiveX Data Objects (ADO) und der Microsoft OLE DB-Provider für SQL Server
  • ADO und der Microsoft-Provider OLE für Jet 4.0

Wenn der Assistent (DTS) nicht funktioniert (und ich denke, er sollte es tun), könnten Sie Folgendes versuchen http://www.devasp.net/net/articles/display/771.html , was im Grunde vorschlägt, dies zu tun so etwas wie

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;
24
inspite

Das hört sich vielleicht nach einem langen Weg an, aber Sie möchten vielleicht mit Excel INSERT SQL-Code generieren, den Sie in Query Analyzer einfügen können, um Ihre Tabelle zu erstellen.

Funktioniert gut, wenn Sie die Assistenten nicht verwenden können, da sich die Excel-Datei nicht auf dem Server befindet

12
Nick Kavadias

Sie könnten OPENROWSET verwenden, etwa:

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

Stellen Sie nur sicher, dass es sich bei dem Pfad um einen Pfad auf dem Server handelt, nicht um Ihren lokalen Computer.

7
SqlACID
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
abk

Eine andere Option besteht darin, VBA in Excel zu verwenden und ein Makro zu schreiben, um die Tabellendaten zu analysieren und in SQL zu schreiben.

Ein Beispiel ist hier: 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
4
Cyrus Loree

Wenn Sie ein visuelles Tool mit Desktop-Oberfläche einschließlich Validierung wünschen, können Sie dieses Excel-Tool gut finden. Sie können das Tool auch zum Erstellen von Datenbearbeitungsaufgaben für mehrere Benutzer verwenden oder sogar Daten aus einer beliebigen Quelle in den SQL Server einfügen.

So überprüfen und importieren Sie eine Excel-Tabelle in die SQL Server-Datenbank:

http://leansoftware.net/en-us/help/Excel-database-tasks/worked-examples/how-to-import-Excel-spreadsheet-to-sql-server-data.aspx

3
Richard Briggs

Bei "dem Assistenten" gehe ich davon aus, dass Sie vom "Assistenten zum Importieren und Exportieren von SQL Server" sprechen. (Ich bin auch ziemlich neu, daher verstehe ich die meisten Fragen nicht, ganz zu schweigen die meisten Antworten, aber ich glaube, ich bekomme diese Frage). Wenn dies nicht der Fall ist, können Sie die Tabelle oder eine Kopie nicht mitnehmen, die nicht importierten Spalten löschen und dann den Assistenten verwenden.

Ich habe immer die Möglichkeit gefunden, das zu tun, was ich damit brauche, und ich bin nur unter SQL Server 2000 (nicht sicher, wie sich andere Versionen unterscheiden).

Edit: Tatsächlich schaue ich es mir gerade an und ich scheine in der Lage zu sein, welche Spalten ich welchen Zeilen in einer vorhandenen Tabelle zuordnen möchte. Auf dem Bildschirm "Select Source Tables and Views" überprüfe ich das von mir verwendete Datenblatt, wählen Sie "Destination" aus und klicken Sie auf die Schaltfläche "Edit ...". Von dort können Sie die Excel-Spalte und die Tabellenspalte auswählen, der sie zugeordnet werden sollen.

3
Jeff Keslinke

Microsoft Access ist eine weitere Option. Sie könnten lokal eine Access-Datenbank auf Ihrem Computer haben, in die Sie die Excel-Tabellenkalkulationen (verfügbare Assistenten) importieren und über ODBC mit den SQL Server-Datenbanktabellen verknüpfen.

Anschließend können Sie eine Abfrage erstellen, die Daten aus der Excel-Tabelle an die SQL Server-Tabellen anfügt.

2
Troy
1
Such

Das beste Werkzeug, das ich je verwendet habe, ist http://tools.perceptus.ca/text-wiz.php?ops=7 Haben Sie es versucht?

1
kajo

Excel + SQLCMD + Perl = exceltomssqlinsert

und Sie können Ihr Excel als Front-End für MSSQL-Datenbank verwenden. 

0
Yordan Georgiev

Der Importassistent bietet diese Option an. Sie können entweder die Option verwenden, um eine eigene Abfrage für die zu importierenden Daten zu erstellen, oder Sie können die Option zum Kopieren von Daten und die Schaltfläche "Zuordnungen bearbeiten" verwenden, um Spalten zu ignorieren, die Sie nicht importieren möchten.

0
DCNYAM

Ich habe DTS (jetzt als SQL Server-Import- und Export-Assistent bezeichnet) verwendet. Ich habe dieses Tutorial verwendet das hat mir sogar in SQL 2008 und Excel 2010 (14.0) gut funktioniert.

Ich hoffe das hilft

-D

0
Diego C.

Probieren Sie zunächst die 32-Bit-Version des Importassistenten aus. Dies zeigt viel mehr unterstützte Importformate.

Hintergrund: Alles hängt von Ihrer Office-Installation (Runtimes Engines) ab.

Wenn Sie Office 2007 oder höher nicht installiert haben, können Sie mit dem Import Wizard (32 Bit) nur Excel 97-2003-Dateien (.xls) importieren.

Wenn Sie Office 2010 und Geater installiert haben (kommt auch in 64 Bit, nicht empfohlen), unterstützt der Import Wizard auch Excel 2007+ (.xlsx) -Dateien.

Einen Überblick über die Laufzeiten finden Sie unter Der Anbieter 'Microsoft.ACE.OLEDB.12.0' ist nicht auf dem lokalen Computer registriert.

0
Bernhard