DetailPage-MSS-KB

Knowledge Base

Artikel-ID: 321686 - Geändert am: Mittwoch, 2. April 2014 - Version: 18.0

 

Auf dieser Seite

Zusammenfassung

Dieser Artikel beschreibt, wie Sie Daten aus Microsoft Excel-Arbeitsblättern unter Verwendung mehrerer Methoden in Microsoft SQL Server-Datenbanken importieren.

Beschreibung der Technik

Die Beispiele in diesem Artikel importieren Excel-Daten mithilfe von:
  • SQL Server Data Transformation Services (DTS)
  • Microsoft SQL Server 2005 Integration Services (SSIS)
  • SQL Server-Verbindungsserver
  • Verteilte SQL Server-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

Anforderungen

Die folgende Liste führt die empfohlene Hardware, Software, Netzwerkinfrastruktur und Servicepacks, die erforderlich sind:
  • 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 gehen davon aus, dass Sie mit den folgenden Themen vertraut sind:
  • Data Transformation Services
  • Verbindungsserver und verteilte Abfragen
  • ADO-Entwicklung in Visual Basic

Beispiele

Importieren vs. Anfügen

Beispiel-SQL-Anweisungen, die in diesem Artikel verwendet werden, zeigen Create Table-Abfragen, die Excel-Daten in eine neue SQL Server-Tabelle unter Verwednugn von SELECT importieren...INTO...FROM Syntax. Sie können diese Anweisungen in Anfügeabfragen konvertieren mithilfe der INSERT INTO...SELECT...FROM...Syntax, während Sie weiterhin auf die Quell- und Ziel-Objekte verweisen, wie in den Codebeispielen dargestellt.

Verwendung von DTS oder SSIS

Sie können den SQL Server Data Transformation Services (DTS) Importassistenten oder den SQL Server-Import / Export-Assistenten für das Importieren von Excel-Daten in SQL Server-Tabellen verwenden. Wenn Sie die Schritte des Assistenten ausführen, und Sie die Excel-Quelltabellen auswählen, denken Sie daran, dass Excel-Objektnamen, die mit einem Dollarzeichen ($) angehängt werden, für Arbeitsblätter (z. B. Arbeitsblatt1$) stehen, und einfache Objektnamen ohne Dollarzeichen benannte Bereiche in Excel repräsentieren..

Verwendung eines Verbindungsservers

Um Abfragen zu vereinfachen, können Sie eine Excel-Arbeitsmappe als verbundenen Server in SQL Server konfigurieren.Weitere Informationen finden Sie in folgendem Artikel der Microsoft Knowledge Base:
306397  (http://support.microsoft.com/kb/306397/EN-US/ ) So wird 's gemacht: Verwenden von Excel mit SQL Server verbundenen Servern und verteilten Abfragen
Der folgende Code importiert die Daten aus dem Arbeitsblatt Customer auf dem Excel-Verbindungsserver "EXCELLINK" in eine neue SQL Server-Tabelle namens XLImport1:
SELECT * INTO XLImport1 FROM EXCELLINK...[Customers$]
				
Sie können die Abfrage an die Quelle mit Hilfe von OPENQUERY auch wie folgt als Passthrough 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 mit der OPENDATASOURCE oder OPENROWSET Funktion importieren. Der folgende Beispielcode importieren auch die Daten aus dem Customers 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.

Die folgende Visual Basic 6.0-Beispielcode erfordert, dass Sie einen Projektverweis auf ActiveX Data Objects (ADO) hinzufügen. In diesem Codebeispiel wird veranschaulicht, wie OPENDATASOURCE und OPENROWSET über eine SQLOLEDB-Verbindung verwenden werden.
    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

Das Beispiel im vorherigen Abschnitt verwendet ADO mit dem SQLOLEDB-Provider für die Verbindung mit dem Ziel Ihres Excel-zu-SQL-Imports. Sie können auch den OLE DB-Provider für Jet 4.0 verwenden, um sich mit der Excel-Datenquelle zu verbinden.

Das Jet-Datenbankmodul kann auf externe Datenbanken in SQL-Anweisungen mithilfe von einer speziellen Syntax verweisen, die drei verschiedene Formaten hat:
  • [Vollständigen Pfad zur Microsoft Access-Datenbank].[Tabellenname]
  • [ISAM-Name;ISAM-Verbindungszeichenfolge].[Tabellenname]
  • [ODBC;ODBC-Verbindungszeichenfolge].[Tabellenname]
In diesem Abschnitt wird das dritte Format zum Erstellen einer ODBC-Verbindung mit der Zieldatenbank des SQL Server verwendet. 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>]
				
Der folgende Visual Basic 6.0-Beispielcode erfordert, dass Sie einen Projektverweis zu ADO hinzufügen. In diesem Codebeispiel wird veranschaulicht, wie Excel-Daten zum SQL Server über eine ADO-Verbindung, mithilfe des Jet 4.0-Providers importiert werden.
    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 diese Syntax, die der Jet-Provider unterstützt, auch verwenden, um Excel-Daten in anderen Microsoft Access-Datenbanken, Indexed Sequential Access-Methode (ISAM) ("desktop") Datenbanken oder ODBC-Datenbanken zu importieren.

Problembehandlung

  • Denken Sie daran, dass Excel-Objektnamen, die mit einem Dollarzeichen ($) angehängt werden Arbeitsblätter (z. B. Tabelle1$) darstellen und einfache Objektnamen benannte Excel-Bereiche darstellen.
  • In einigen Fällen, insbesondere wenn Sie Excel-Quelldaten über den Tabellennamen anstelle einer SELECT-Abfrage verwenden, werden die Spalten in der Zieltabelle des SQL Servers in alphabetischer Reihenfolge angeordnet.Für weitere Informationen zu diesem Problem mit dem Jet-Provider klicken Sie auf die Artikelnummer, um den Artikel der Microsoft Knowledge Base anzuzeigen:
    299484  (http://support.microsoft.com/kb/299484/EN-US/ ) PRB: Wenn Sie ADOX verwenden, um Spalten einer Access-Tabelle abzurufen, 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  (http://support.microsoft.com/kb/194124/EN-US/ ) PRB: Excel-Werte als NULL unter Verwendung von DAO-OpenRecordset zurückgegeben

Informationsquellen

Weitere Informationen dazu, wie Sie Excel als Datenquelle verwenden, finden Sie im folgenden Artikel der Microsoft Knowledge Base:
257819  (http://support.microsoft.com/kb/257819/EN-US/ ) So wird 's gemacht: Verwenden von ADO mit Excel-Daten von Visual Basic oder VBA
Weitere Informationen dazu, wie Sie Daten nach Excel übertragen, finden Sie in den nachstehenden Artikeln der Microsoft Knowledge Base:
295646  (http://support.microsoft.com/kb/295646/EN-US/ ) So wird 's gemacht: Übertragen von Daten aus ADO-Datenquelle auf Excel mit ADO
247412  (http://support.microsoft.com/kb/247412/EN-US/ ) INFO: Methoden zum Übertragen von Daten nach Excel aus Visual Basic
246335  (http://support.microsoft.com/kb/246335/EN-US/ ) So wird's gemacht: Übertragen von Daten aus einem ADO-Recordset auf Excel mit Automatisierung
319951  (http://support.microsoft.com/kb/319951/EN-US/ ) Gewusst wie: Übertragen von Daten nach Excel mithilfe von SQL Server Data Transformation Services
306125  (http://support.microsoft.com/kb/306125/EN-US/ ) Gewusst wie: Importieren von Daten aus SQL Server in Microsoft Excel

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 ArtikelMaschinell ü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  (http://support.microsoft.com/kb/321686/en-us/ )
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.
Freigeben
Weitere Supportoptionen
Microsoft Community-Supportforen
Kontaktieren Sie uns direkt
Zertifizierten Partner finden
Microsoft Store
Folgen Sie uns: