Importieren von Daten aus Excel, SQL Server

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 321686 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

In diesem Artikel wird veranschaulicht, wie Sie mithilfe verschiedener Methoden Daten aus Microsoft Excel-Arbeitsblättern in Microsoft SQL Server-Datenbanken importieren.

Beschreibung der Technik

In den Beispielen dieses Artikels Importieren Sie Daten von Excel mit:
  • SQL Server Data Transformation Services (DTS)
  • Microsoft SQL Server 2005 Integration Services (SSIS)
  • Verknüpfte SQL Server-Servern
  • Verteilte SQL Server-Abfragen
  • ActiveX Data Objects (ADO) und der Microsoft OLE DB Provider für SQL Server
  • ADO und der Microsoft OLE DB Provider für Jet 4.0

Anforderungen

Die folgende Liste führt die empfohlene Hardware, Software, Netzwerkinfrastruktur und Servicepacks auf, die benötigt werden:
  • Verfügbare Instanz von Microsoft SQL Server 7.0 oder Microsoft SQL Server 2000 oder Microsoft SQL Server 2005
  • Microsoft Visual Basic 6.0 für die ADO-Beispiele, die Visual Basic verwenden.
Teile dieses Artikels wird davon ausgegangen, dass Sie mit folgenden Themen vertraut sind:
  • Data Transformation Services
  • Verbindungsserver und verteilte Abfragen
  • ADO-Entwicklung in Visual Basic

Beispiele

Import vs. Anfügen

Die Beispiel-SQL-Anweisungen, die in diesem Artikel verwendet werden, zeigen Create Table-Abfragen, die Excel-Daten in eine neue SQL Server-Tabelle importieren mittels der SELECT...IN...FROM Syntax. Sie können diese Anweisungen mit der INSERT INTO in Anfügeabfragen konvertieren...WÄHLEN SIE...VON Syntax, während Sie weiterhin auf die Quell- und Ziel-Objekte zu verweisen, wie in den Codebeispielen dargestellt.

Verwendung von DTS oder SSIS

Der Importassistent SQL Server Data Transformation Services (DTS) oder SQL Server importieren und Export-Assistenten können Sie Excel-Daten in SQL Server-Tabellen importieren. Beim schrittweisen Ausführen des Assistenten und Auswählen der Excel-Quelltabellen, denken Sie daran, dass Excel-Objektnamen, an die ein Dollarzeichen ($) angehängt werden, Arbeitsblättern darstellen (z. B. Tabelle1$), und einfache Objektnamen ohne Dollarzeichen Excel benannte Bereiche darstellen.

Verwendung eines Verbindungsservers

Zur Vereinfachung von Abfragen können Sie eine Excel-Arbeitsmappe als Verbindungsserver in SQL Server konfigurieren.Klicken Sie für Weitere Informationen auf die nachstehende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
306397 So wird's gemacht: Excel mit SQL Server-Verbindungsserver und verteilte Abfragen
Der folgende Code importiert die Daten aus dem Arbeitsblatt des Kunden auf dem Excel-Verbindungsserver "EXCELLINK" in eine neue SQL Server-Tabelle namens XLImport1:
SELECT * INTO XLImport1 FROM EXCELLINK...[Customers$]
				
Sie können auch die Abfrage für die Quelle auf eine Pass-Through-mit OPENQUERY wie folgt ausführen:
SELECT * INTO XLImport2 FROM OPENQUERY(EXCELLINK,
    'SELECT * FROM [Customers$]')
				

Verwendung von verteilten Abfragen

Wenn Sie keine dauerhafte Verbindung mit der Excel-Arbeitsmappe als Verbindungsserver konfigurieren möchten, können Sie Daten für einen bestimmten Zweck importieren, mit der OPENDATASOURCE oder OPENROWSET-Funktion. Die folgenden Beispielcodes importieren die Daten auch aus dem Kunden Excel-Arbeitsblatt in neue SQL Server-Tabellen:
SELECT * INTO XLImport3 FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source=C:\test\xltest.xls;Extended Properties=Excel 8.0')...[Customers$]

SELECT * INTO XLImport4 FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:\test\xltest.xls', [Customers$])

SELECT * INTO XLImport5 FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:\test\xltest.xls', 'SELECT * FROM [Customers$]')
				

Verwendung von ADO und SQLOLEDB

Wenn Sie mit SQL Server in einer ADO-Anwendung verbunden werden mithilfe von Microsoft OLE DB für SQL Server (SQLOLEDB), können Sie die gleiche Syntax "verteilte Abfrage" aus der Verwendung von verteilten Abfragen Abschnitt, um Excel-Daten in SQL Server importieren.

Das folgende Codebeispiel für Visual Basic 6.0 erfordert, dass Sie einen Projektverweis auf ActiveX Data Objects (ADO) hinzufügen. In diesem Codebeispiel veranschaulicht auch, wie Sie OPENDATASOURCE und OPENROWSET über eine SQLOLEDB-Verbindung verwenden.
    Dim cn As ADODB.Connection
    Dim strSQL As String
    Dim lngRecsAff As Long
    Set cn = New ADODB.Connection
    cn.Open "Provider=SQLOLEDB;Data Source=<server>;" & _
        "Initial Catalog=<database>;User ID=<user>;Password=<password>"

    'Import by using OPENDATASOURCE.
    strSQL = "SELECT * INTO XLImport6 FROM " & _
        "OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', " & _
        "'Data Source=C:\test\xltest.xls;" & _
        "Extended Properties=Excel 8.0')...[Customers$]"
    Debug.Print strSQL
    cn.Execute strSQL, lngRecsAff, adExecuteNoRecords
    Debug.Print "Records affected: " & lngRecsAff

    'Import by using OPENROWSET and object name.
    strSQL = "SELECT * INTO XLImport7 FROM " & _
        "OPENROWSET('Microsoft.Jet.OLEDB.4.0', " & _
        "'Excel 8.0;Database=C:\test\xltest.xls', " & _
        "[Customers$])"
    Debug.Print strSQL
    cn.Execute strSQL, lngRecsAff, adExecuteNoRecords
    Debug.Print "Records affected: " & lngRecsAff

    'Import by using OPENROWSET and SELECT query.
    strSQL = "SELECT * INTO XLImport8 FROM " & _
        "OPENROWSET('Microsoft.Jet.OLEDB.4.0', " & _
        "'Excel 8.0;Database=C:\test\xltest.xls', " & _
        "'SELECT * FROM [Customers$]')"
    Debug.Print strSQL
    cn.Execute strSQL, lngRecsAff, adExecuteNoRecords
    Debug.Print "Records affected: " & lngRecsAff

    cn.Close
    Set cn = Nothing
				

Verwendung von ADO und Jet-Provider

Im Beispiel im vorherigen Abschnitt verwendet ADO für die Verbindung zum Ziel der Excel-SQL-Import mit dem SQLOLEDB-Provider. Der OLE DB-Provider für Jet 4.0 können auch die Excel-Datenquelle herstellen.

Das Jet-Datenbankmodul kann externe Datenbanken in SQL-Anweisungen verweisen, indem Sie eine spezielle Syntax, die drei verschiedene Formate:
  • [Vollständigen Pfad zur Microsoft Access-Datenbank].[Tabellenname]
  • [ISAM-Name;ISAM-Verbindungszeichenfolge].[Tabellenname]
  • [ODBC;ODBC-Verbindungszeichenfolge].[Tabellenname]
Dieser Abschnitt verwendet das dritte Format zu einer ODBC-Verbindung zur SQL Server-Zieldatenbank. Sie können einen ODBC-Datenquellennamen (DSN) oder eine DSN-lose Verbindungszeichenfolge verwenden:
DSN:
    [odbc;DSN=<DSN name>;UID=<user>;PWD=<password>]

DSN-less:
   [odbc;Driver={SQL Server};Server=<server>;Database=<database>;
       UID=<user>;PWD=<password>]
				
Das folgende Codebeispiel für Visual Basic 6.0 erfordert, dass Sie einen Projektverweis zu ADO hinzufügen. In diesem Codebeispiel wird veranschaulicht, wie Sie Excel-Daten über eine ADO-Verbindung zu SQL Server importieren, mit dem Jet 4.0-Anbieter.
    Dim cn As ADODB.Connection
    Dim strSQL As String
    Dim lngRecsAff As Long
    Set cn = New ADODB.Connection
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=C:\test\xltestt.xls;" & _
        "Extended Properties=Excel 8.0"
    
    'Import by using Jet Provider.
    strSQL = "SELECT * INTO [odbc;Driver={SQL Server};" & _
        "Server=<server>;Database=<database>;" & _
        "UID=<user>;PWD=<password>].XLImport9 " & _
        "FROM [Customers$]"
    Debug.Print strSQL
    cn.Execute strSQL, lngRecsAff, adExecuteNoRecords
    Debug.Print "Records affected: " & lngRecsAff
        
    cn.Close
    Set cn = Nothing
				
Sie können auch diese Syntax der Jet-Provider unterstützt Excel-Daten in andere Microsoft Access-Datenbanken, indizierten sequenziellen Methode (ISAM) ("desktop") Datenbanken oder ODBC-Datenbanken zu importieren.

Problembehandlung:

  • Denken Sie daran, dass Excel-Objektnamen, an die ein Dollarzeichen ($) angehängt werden, Arbeitsblätter (z. B. Tabelle1$) darstellen, und einfache Objektnamen benannte Excel-Bereiche darstellen.
  • In einigen Fällen vor allem, wenn Sie Excel-Quelldaten mithilfe der Tabellenname anstelle einer Auswahlabfrage festlegen werden die Spalten in der SQL Server-Zieltabelle in alphabetischer Reihenfolge neu angeordnet.Weitere Informationen zu diesem Problem mit dem Jet-Provider klicken Sie auf die nachstehende Artikelnummer klicken, um den Artikel der Microsoft Knowledge Base anzuzeigen:
    299484 PRB: Wenn Sie ADOX verwenden, um Spalten einer Access-Tabelle abrufen, werden Spalten alphabetisch sortiert
  • Wenn der Jet-Provider feststellt, dass Excel-Spalte eine Mischung aus Text und numerischen Daten enthält, der Jet-Provider wird der Datentyp "Mehrheit" ausgewählt und gibt nicht übereinstimmende Zeichen als Nullen zurück.Weitere Informationen dazu, wie Sie dieses Problem umgehen klicken Sie auf die nachstehende Artikelnummer klicken, um den Artikel der Microsoft Knowledge Base anzuzeigen:
    194124 PRB: Excel-Werte als NULL unter Verwendung von DAO-OpenRecordset zurückgegeben

Informationsquellen

Weitere Informationen dazu, wie Sie Excel als Datenquelle verwenden klicken Sie auf die nachstehende Artikelnummer klicken, um den Artikel der Microsoft Knowledge Base anzuzeigen:
257819 So wird's gemacht: Verwenden von ADO mit Excel-Daten von Visual Basic oder VBA
Weitere Informationen dazu, wie Sie Daten in Excel zu übertragen Klicken Sie auf die nachstehenden Artikelnummern klicken, um die betreffenden Artikel in der Microsoft Knowledge Base anzuzeigen:
295646 So wird's gemacht: Übertragen von Daten aus ADO-Datenquelle auf Excel mit ADO
247412 INFO: Methoden zum Übertragen von Daten nach Excel aus Visual Basic
246335 So wird's gemacht: Übertragen von Daten aus einem ADO-Recordset auf Excel mit Automatisierung
319951 Gewusst wie: Übertragen von Daten nach Excel mithilfe von SQL Server Data Transformation Services
306125 Gewusst wie: Importieren von Daten aus SQL Server in Microsoft Excel

Eigenschaften

Artikel-ID: 321686 - Geändert am: Samstag, 3. Januar 2015 - Version: 19.0
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Excel 2000 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 64-Bit Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 97 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Workgroup Edition
Keywords: 
kbhowtomaster kbjet kbmt KB321686 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell übersetzt und wird dann möglicherweise mithilfe des Community Translation Framework (CTF) von Mitgliedern unserer Microsoft Community nachbearbeitet. Weitere Informationen zu CTF finden Sie unter http://support.microsoft.com/gp/machine-translation-corrections/de.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 321686
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com