Sie sind zurzeit offline. Es wird auf die erneute Herstellung einer Internetverbindung gewartet.

Importieren von Daten aus Excel in SQL Server

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
Zusammenfassung
Dieser Artikel veranschaulicht, wie mithilfe verschiedener Methoden Daten aus Microsoft Excel-Arbeitsblättern in Microsoft SQL Server-Datenbanken importiert werden.

back to the top

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
  • SQL Server verteilte Abfragen
  • ActiveX Data Objects (ADO) und der Microsoft OLE DB Provider für SQL Server
  • ADO und Microsoft OLE DB Provider für Jet 4.0
back to the top

Voraussetzungen

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
In Teilen dieses Artikels wird davon ausgegangen, dass Sie mit folgenden Themen vertraut sind:
  • Data Transformation Services
  • Verbindungsserver und verteilte Abfragen
  • ADO-Entwicklung in Visual Basic
back to the top

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 Aussagen in Anfügeabfragen konvertieren, mit INSERT INTO... WÄHLEN SIE... Syntax, während Sie weiterhin die Quell- und Objekte zu verweisen, wie in den Codebeispielen dargestellt.

back to the top

Verwendung von DTS oder SSIS

Der Import-Assistent für 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.

back to the top

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 die Abfrage für die Quelle auch wie folgt mit OPENQUERY "im Vorrübergehen" ausführen:
SELECT * INTO XLImport2 FROM OPENQUERY(EXCELLINK,    'SELECT * FROM [Customers$]')				
back to the top

Verwendung von verteilten Abfragen

Wenn Sie keine dauerhafte Verbindung mit Excel-Arbeitsmappe als Verbindungsserver konfigurieren möchten, können Sie Daten für einen bestimmten Zweck mit der OPENDATASOURCE oder OPENROWSET-Funktion importieren. 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$]')				
back to the top

Verwendung von ADO und SQLOLEDB

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

Im folgende Codebeispiel für Visual Basic 6.0 müssen Sie einen Projektverweis auf ActiveX Data Objects (ADO) hinzufügen. Dieser Code demonstriert auch 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				
back to the top

Verwendung von ADO und Jet-Provider

Im Beispiel im vorherigen Abschnitt verwendet ADO mit der OLE DB-Provider für die Verbindung zum Ziel Ihres Imports von Excel SQL. OLE DB Provider für Jet 4.0 können Sie die Excel-Datenquelle herstellen.

Das Jet-Datenbankmodul kann externe Datenbanken in SQL-Anweisungen mit Verweisen 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 mit der SQL Server-Datenbank. 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>]				
Folgende Visual Basic 6.0-Beispielcode erfordert, dass Sie einen Projektverweis zu ADO hinzufügen. Dieses Codebeispiel veranschaulicht, wie Daten über eine ADO-Verbindung zu SQL Server importieren, mit Jet 4.0-Provider.
    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 verwenden, die der Jet-Provider unterstützt, um Excel-Daten in andere Microsoft Access-Datenbanken, ISAM-Datenbanken ("Desktop") (Indexed Sequential Access Method, indizierte sequenzielle Zugriffsmethode) oder ODBC-Datenbanken zu importieren.

back to the top

Problembehandlung:

  • Beachten Sie, 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 mit dem Tabellennamen statt einer Auswahlabfrage festlegen werden die Spalten in der SQL Server-Zieltabelle alphabetisch neu angeordnet.Weitere Informationen zu diesem Problem mit dem Jet-Provider finden Sie der Microsoft Knowledge Base:
    299484 PRB: Spalten sind alphabetisch sortiert, wenn Sie ADOX Spalten der Zugriffstabelle abrufen
  • Jet-Provider fest, dass eine Excel-Spalte Mischung aus Text und numerischen Daten enthält, wählt den Datentyp "Mehrheit" Jet-Provider und gibt nicht übereinstimmende Zeichen als Nullen.Weitere Informationen zum Umgehen dieses Problems finden Sie der Microsoft Knowledge Base:
    194124 PRB: Excel-Werte als NULL mit DAO-OpenRecordset zurückgegeben
back to the top
Informationsquellen
Weitere Informationen zur Verwendung von Excel als Datenquelle finden Sie im Artikel der Microsoft Knowledge Base:
257819 So wird's gemacht: Verwenden von ADO mit Excel-Daten von Visual Basic oder VBA
Weitere Informationen zum Übertragen von Daten in Excel finden Sie zu die Artikeln der Microsoft Knowledge Base:
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
back to the top
Excel-Sql Ado Dts Sqloledb jet

Warnung: Dieser Artikel wurde automatisch übersetzt.

Eigenschaften

Artikelnummer: 321686 – Letzte Überarbeitung: 07/03/2016 07:54:00 – Revision: 22.0

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

  • kbhowtomaster kbjet kbmt KB321686 KbMtde
Feedback
=">