Freigeben über


OPENROWSET (Transact-SQL)

Enthält alle für einen Zugriff auf Remotedaten von einer OLE DB-Datenquelle notwendigen Verbindungsinformationen. Diese Methode ist eine Alternative zum Zugriff auf Tabellen eines Verbindungsservers. Sie ist eine einmalig verwendete Ad-hoc-Methode zum Verbinden und Zugreifen auf Remotedaten mithilfe von OLE DB. Für häufigere Verweise auf OLE DB-Datenquellen verwenden Sie stattdessen Verbindungsserver. Weitere Informationen finden Sie unter Verbindungsserver. Auf die OPENROWSET-Funktion kann in der FROM-Klausel einer Abfrage verwiesen werden, als sei sie ein Tabellenname. Auf die OPENROWSET-Funktion kann auch als Zieltabelle einer INSERT-, UPDATE- oder DELETE-Anweisung verwiesen werden, je nach den Funktionen des OLE DB-Anbieters. Obwohl die Abfrage möglicherweise mehrere Resultsets zurückgibt, gibt OPENROWSET nur das erste Resultset zurück.

OPENROWSET unterstützt auch Massenvorgänge über einen integrierten BULK-Anbieter, mit dem Daten aus einer Datei gelesen und als Rowset zurückgegeben werden können.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

OPENROWSET 
( { 'provider_name' , { 'datasource' ; 'user_id' ; 'password' 
   | 'provider_string' } 
      , {   [ catalog. ] [ schema. ] object 
       | 'query' 
     } 
   | BULK 'data_file' , 
       { FORMATFILE = 'format_file_path' [ <bulk_options> ]
       | SINGLE_BLOB | SINGLE_CLOB | SINGLE_NCLOB }
} ) 

<bulk_options> ::=
   [ , CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' } ] 
   [ , ERRORFILE = 'file_name' ]
   [ , FIRSTROW = first_row ] 
   [ , LASTROW = last_row ] 
   [ , MAXERRORS = maximum_errors ] 
   [ , ROWS_PER_BATCH = rows_per_batch ] 

   [ , ORDER ( { column [ ASC | DESC ] } [ ,...n ] ) [ UNIQUE ] 

Argumente

  • 'provider_name'
    Eine Zeichenfolge, die den Anzeigenamen (oder die PROGID) des OLE DB-Anbieters darstellt, wie er in der Registrierung angegeben wurde. provider_name hat keinen Standardwert.

  • 'datasource'
    Eine Zeichenfolgenkonstante, die einer bestimmten OLE DB-Datenquelle entspricht. datasource ist die DBPROP_INIT_DATASOURCE-Eigenschaft, die an die IDBProperties-Schnittstelle des Anbieters übergeben wird, um den Anbieter zu initialisieren. Normalerweise enthält diese Zeichenfolge den Namen der Datenbankdatei, den Namen des Datenbankservers oder einen Namen, mit dem der Anbieter die Datenbank(en) finden kann.

  • 'user_id'
    Eine Zeichenfolgenkonstante für den Benutzernamen, der an den angegebenen OLE DB-Anbieter übergeben wird. user_id gibt den Sicherheitskontext für die Verbindung an und wird als DBPROP_AUTH_USERID-Eigenschaft übergeben, um den Anbieter zu initialisieren. user_id darf kein Microsoft Windows-Anmeldename sein.

  • 'password'
    Eine Zeichenfolgenkonstante für das Benutzerkennwort, das an den OLE DB-Anbieter übergeben wird. password wird beim Initialisieren des Anbieters als DBPROP_AUTH_PASSWORD-Eigenschaft übergeben. password darf kein Microsoft Windows-Kennwort sein.

  • 'provider_string'
    Eine anbieterspezifische Verbindungszeichenfolge, die als DBPROP_INIT_PROVIDERSTRING-Eigenschaft übergeben wird, um den OLE DB-Anbieter zu initialisieren. provider_string kapselt normalerweise alle zum Initialisieren des Anbieters benötigten Verbindungsinformationen. Eine Liste der Schlüsselwörter, die vom OLE DB-Anbieter von SQL Server Native Client erkannt werden, finden Sie unter Initialisierungs- und Autorisierungseigenschaften.

  • catalog
    Der Name des Katalogs oder der Datenbank, in der sich das angegebene Objekt befindet.

  • schema
    Der Name des Schemas oder des Besitzers für das angegebene Objekt.

  • object
    Der Objektname, der das zu verwendende Objekt eindeutig identifiziert.

  • 'query'
    Eine Zeichenfolgenkonstante, die zum Anbieter gesendet und von diesem ausgeführt wird. Die lokale Instanz von SQL Server verarbeitet nicht diese Abfrage, sondern die vom Anbieter zurückgegebenen Abfrageergebnisse (eine Pass-Through-Abfrage). Pass-Through-Abfragen sind bei Anbietern nützlich, die ihre Tabellendaten nicht über Tabellennamen bereitstellen, sondern nur über eine Befehlssprache. Pass-Through-Abfragen werden auf dem Remoteserver unterstützt, wenn der Abfrageanbieter das Command-Objekt von OLE DB und die dafür notwendigen Schnittstellen unterstützt. Weitere Informationen finden Sie unter SQL Server Native Client (OLE DB)-Referenzdokumentation.

  • BULK
    Verwendet den BULK-Rowsetanbieter für OPENROWSET, um Daten aus einer Datei zu lesen. In SQL Server kann OPENROWSET aus einer Datendatei lesen, ohne die Daten in eine Zieltabelle zu laden. Auf diese Weise können Sie OPENROWSET mit einer einfachen SELECT-Anweisung verwenden.

    Die Argumente der BULK-Option ermöglichen eine erhebliche Kontrolle darüber, wo das Lesen von Daten begonnen und beendet werden soll, wie mit Fehlern umgegangen wird und wie Daten interpretiert werden sollen. Beispielsweise können Sie angeben, dass die Datendatei als einzeiliges, einspaltiges Rowset vom Datentyp varbinary, varchar oder nvarchar gelesen wird. Das Standardverhalten ist in den folgenden Argumentbeschreibungen erläutert.

    Informationen zum Verwenden der BULK-Option finden Sie unter "Hinweise" weiter unten in diesem Thema. Informationen zu den für die BULK-Option erforderlichen Berechtigungen finden Sie im Abschnitt "Berechtigungen" weiter unten in diesem Thema.

    HinweisHinweis

    Wird OPENROWSET (BULK ...) zum Importieren von Daten mit dem vollständigen Wiederherstellungsmodell verwendet, wird die Protokollierung nicht optimiert.

    Informationen zum Vorbereiten von Daten für den Massenimport finden Sie unter Vorbereiten von Daten für den Massenexport oder -import.

  • 'data_file'
    Der vollständige Pfad der Datendatei, deren Daten in die Zieltabelle kopiert werden sollen.

  • FORMATFILE ='format_file_path'
    Gibt den vollständigen Pfad einer Formatdatei an. SQL Server unterstützt zwei Formatdateitypen: XML- und Nicht-XML-Formatdateien.

    Eine Formatdatei ist erforderlich, um die Spaltentypen im Resultset zu definieren. Dies gilt nur dann nicht, wenn SINGLE_CLOB, SINGLE_BLOB oder SINGLE_NCLOB angegeben ist. In diesem Fall ist die Formatdatei nicht erforderlich.

    Weitere Informationen zu Formatdateien finden Sie unter Verwenden einer Formatdatei für den Massenimport von Daten.

  • < bulk_options >
    Gibt ein oder mehrere Argumente für die BULK-Option an.

  • CODEPAGE = { **'**ACP '| **'**OEM '| **'**RAW '| 'code_page' }
    Gibt die Codepage für die in der Datendatei enthaltenen Daten an. CODEPAGE ist nur dann von Bedeutung, wenn die Daten Spalten vom Typ char, varchar oder text mit mehr als 127 oder weniger als 32 Zeichenwerten enthalten.

    HinweisHinweis

    Es wird empfohlen, für jede Spalte einen Sortierungsnamen in einer Formatdatei anzugeben.

    CODEPAGE-Wert

    Beschreibung

    ACP

    Konvertiert Spalten vom Datentyp char, varchar oder text von der ANSI-/Microsoft-Windows-Codepage (ISO 1252) in die SQL Server-Codepage.

    OEM (Standard)

    Konvertiert Spalten vom Datentyp char, varchar oder text von der OEM-Codepage des Systems in die SQL Server-Codepage.

    RAW

    Es erfolgt keine Konvertierung in eine andere Codepage. Dies ist die schnellste Option.

    code_page

    Gibt die Quellcodepage an, nach der die Zeichendaten in der Datendatei codiert werden, beispielsweise 850.

    Wichtiger HinweisWichtig
    SQL Server unterstützt nicht Codepage 65001 (UTF-8-Codierung).
  • ERRORFILE ='file_name'
    Gibt die Datei an, die zum Sammeln der Zeilen verwendet wird, die Formatierungsfehler enthalten und nicht in ein OLE DB-Rowset konvertiert werden können. Diese Zeilen werden aus der Datendatei ohne Änderungen in diese Fehlerdatei kopiert.

    Die Fehlerdatei wird zu Beginn der Ausführung des Befehls erstellt. Wenn die Datei bereits vorhanden ist, wird ein Fehler ausgelöst. Darüber hinaus wird eine Kontrolldatei mit der Erweiterung .ERROR.txt erstellt. Diese Datei enthält einen Verweis auf jede Zeile in der Fehlerdatei und stellt eine Fehlerdiagnose bereit. Nachdem die Fehler korrigiert wurden, können die Daten geladen werden.

  • FIRSTROW **=**first_row
    Gibt die Nummer der ersten zu ladenden Zeile an. Die Standardeinstellung ist 1. Damit wird die erste Zeile in der festgelegten Datendatei angegeben. Die Zeilennummern werden durch Zählen der Zeilenabschlusszeichen bestimmt. FIRSTROW basiert auf 1.

  • LASTROW **=**last_row
    Gibt die Nummer der letzten zu ladenden Zeile an. Der Standardwert ist 0. Damit wird die letzte Zeile in der festgelegten Datendatei angegeben.

  • MAXERRORS **=**maximum_errors
    Gibt an, nach wie vielen Syntaxfehlern oder nicht übereinstimmenden Zeilen gemäß der Definition in der Formatdatei OPENROWSET eine Ausnahme auslöst. Bis zum Erreichen von MAXERRORS ignoriert OPENROWSET fehlerhafte Zeilen und lädt diese nicht, wobei jede fehlerhafte Zeile als ein Fehler gezählt wird.

    Der Standardwert für maximum_errors ist 10.

    HinweisHinweis

    MAX_ERRORS gilt nicht für CHECK-Einschränkungen oder für Konvertierungen der Datentypen money und bigint.

  • ROWS_PER_BATCH **=**rows_per_batch
    Gibt die ungefähre Anzahl von Datenzeilen in der Datendatei an. Der Wert sollte von der gleichen Größenordnung sein wie die tatsächliche Zeilenanzahl.

    OPENROWSET importiert eine Datendatei immer als einzelnen Batch. Wenn Sie jedoch für rows_per_batch einen Wert > 0 angeben, verwendet der Abfrageprozessor den Wert von rows_per_batch als Hinweis für die Zuordnung der Ressourcen im Abfrageplan.

    Standardmäßig ist ROWS_PER_BATCH unbekannt. ROWS_PER_BATCH = 0 entspricht dem Auslassen der Angabe von ROWS_PER_BATCH.

  • ORDER ( { column [ ASC | DESC ] } [ ,... n ] [ UNIQUE ] )
    Ein optionaler Hinweis, der angibt, wie die Daten in der Datendatei sortiert sind. Standardmäßig geht der Massenvorgang davon aus, dass die Datendatei nicht sortiert ist. Die Leistung kann verbessert werden, wenn die festgelegte Reihenfolge vom Abfrageoptimierer zur Generierung eines effizienteren Abfrageplans verwendet werden kann. Folgendes sind Beispiele dafür, wann die Festlegung einer Sortierung von Vorteil sein kann:

    • Einfügen von Zeilen in eine Tabelle mit einem gruppierten Index, in der die Rowsetdaten nach dem Schlüssel des gruppierten Index sortiert sind.

    • Verknüpfen des Rowsets mit einer anderen Tabelle, in der die Sortierungs- und Verknüpfungsspalten übereinstimmen.

    • Aggregieren der Rowsetdaten nach den Sortierspalten.

    • Verwenden des Rowsets als Quelltabelle in der FROM-Klausel einer Abfrage, wobei die Sortierungs- und Verknüpfungsspalten übereinstimmen.

    UNIQUE gibt an, dass die Datendatei keine doppelten Einträge aufweist.

    Wenn die tatsächlichen Zeilen in der Datendatei nicht der angegebenen Reihenfolge entsprechend sortiert sind oder wenn der UNIQUE-Hinweis angegeben wird und doppelte Schlüssel vorhanden sind, wird ein Fehler zurückgegeben.

    Spaltenaliase sind erforderlich, wenn ORDER verwendet wird. Die Liste der Spaltenaliase muss auf die abgeleitete Tabelle verweisen, auf die von der BULK-Klausel zugegriffen wird. Die Spaltennamen, die in der ORDER-Klausel angegeben sind, verweisen auf diese Liste der Spaltenaliase. Spalten für Datentypen mit großen Werten (varchar(max), nvarchar(max), varbinary(max) und xml) sowie für LOB-Datentypen (Large Object) (text, ntext und image) können nicht angegeben werden.

  • SINGLE_BLOB
    Gibt den Inhalt von data_file als einzeiliges, einspaltiges Rowset vom Typ varbinary(max) zurück.

    Wichtiger HinweisWichtig

    Es wird empfohlen, XML-Daten anstelle von mit SINGLE_CLOB und SINGLE_NCLOB ausschließlich mithilfe der SINGLE_BLOB-Option zu importieren, da nur SINGLE_BLOB alle Windows-Codierungskonvertierungen unterstützt.

  • SINGLE_CLOB
    Wird data_file als ASCII gelesen, wird der Inhalt als einzeiliges, einspaltiges Rowset vom Typ varchar(max) zurückgegeben. Dabei wird die Sortierung der aktuellen Datenbank verwendet.

  • SINGLE_NCLOB
    Wenn data_file als UNICODE gelesen wird, wird der Inhalt als einzeiliges, einspaltiges Rowset vom Typ nvarchar(max) zurückgegeben, wobei die Sortierung der aktuellen Datenbank verwendet wird.

Hinweise

Mit OPENROWSET kann nur auf Remotedaten von OLE DB-Datenquellen zugegriffen werden, wenn für den angegebenen Anbieter die DisallowAdhocAccess-Registrierungsoption explizit auf 0 festgelegt wird und die erweiterte Konfigurationsoption für Ad Hoc Distributed Queries aktiviert ist. Werden diese Optionen nicht festgelegt, ist der Ad-hoc-Zugriff im Rahmen des Standardverhaltens nicht möglich.

Beim Zugriff auf OLE DB-Remotedatenquellen wird die Anmelde-ID vertrauenswürdiger Verbindungen nicht automatisch von dem Server delegiert, auf dem der Client mit dem Server verbunden ist, der abgefragt wird. Die Authentifizierungsdelegierung muss konfiguriert sein. Weitere Informationen finden Sie unter Konfigurieren von Verbindungsservern für die Delegierung.

Katalog- und Schemaname sind erforderlich, wenn der OLE DB-Anbieter mehrere Kataloge und Schemas in der angegebenen Datenquelle unterstützt. Die Angabe von Werten für catalog und schema kann entfallen, wenn diese vom OLE DB-Anbieter nicht unterstützt werden. Wenn der Anbieter nur Schemanamen unterstützt, muss ein zweiteiliger Name im Format schema**.object angegeben werden. Wenn der Anbieter nur Katalognamen unterstützt, muss ein dreiteiliger Name im Format catalog.schema.**object angegeben werden. Dreiteilige Namen müssen für Pass-Through-Abfragen angegeben werden, für die der OLE DB-Anbieter von SQL Server Native Client verwendet wird. Weitere Informationen finden Sie unter Transact-SQL-Syntaxkonventionen (Transact-SQL).

Für die Argumente von OPENROWSET können keine Variablen verwendet werden.

Verwenden von OPENROWSET mit der BULK-Option

Die folgenden Transact-SQL-Erweiterungen unterstützen die OPENROWSET(BULK...)-Funktion:

  • Mithilfe einer FROM-Klausel, die mit SELECT verwendet wird, kann OPENROWSET(BULK...) anstelle eines Tabellennamens mit voller SELECT-Funktionalität aufgerufen werden.

    OPENROWSET mit der BULK-Option erfordert in der FROM-Klausel einen abhängigen Namen (wird auch als Bereichsvariable oder Alias bezeichnet). Spaltenaliase können angegeben werden. Wenn keine Liste der Spaltenaliase angegeben wird, sind für die Formatdatei Spaltennamen notwendig. Durch das Angeben von Spaltenaliasen werden die Spaltennamen in der Formatdatei wie folgt außer Kraft gesetzt:

    FROM OPENROWSET(BULK...) AS table_alias

    FROM OPENROWSET(BULK...) AS table_alias(column_alias,...n)

  • Mithilfe einer SELECT...FROM OPENROWSET(BULK...)-Anweisung können Daten in einer Datei direkt abgefragt werden, ohne dass die Daten in eine Tabelle importiert werden. Mithilfe von SELECT...FROM OPENROWSET(BULK...)-Anweisungen können auch Bulkspaltenaliase aufgeführt werden, indem eine Formatdatei für die Angabe von Spaltennamen und Datentypen verwendet wird.

  • Wenn Sie eine OPENROWSET(BULK...)-Anweisung als Quelltabelle in einer INSERT- oder MERGE-Anweisung verwenden, wird ein Massenimport von Daten aus einer Datendatei in eine SQL Server-Tabelle ausgeführt. Weitere Informationen finden Sie unter Importieren von Massendaten mithilfe von BULK INSERT oder OPENROWSET(BULK...).

  • Wenn die Option OPENROWSET BULK mit einer INSERT-Anweisung verwendet wird, unterstützt die BULK-Klausel Tabellenhinweise. Zusätzlich zu den regulären Tabellenhinweisen, z. B. TABLOCK, sind für die BULK-Klausel die folgenden speziellen Tabellenhinweise möglich: IGNORE_CONSTRAINTS (ignoriert nur die CHECK- und FOREIGN KEY-Einschränkungen), IGNORE_TRIGGERS, KEEPDEFAULTS und KEEPIDENTITY. Weitere Informationen finden Sie unter Tabellenhinweise (Transact-SQL).

Informationen zum Verwenden von INSERT...SELECT * FROM OPENROWSET(BULK...)-Anweisungen finden Sie unter Importieren und Exportieren von Massendaten. Informationen dazu, wann durch den Massenimport ausgeführte Zeileneinfügevorgänge im Transaktionsprotokoll protokolliert werden, finden Sie unter Voraussetzungen für die minimale Protokollierung beim Massenimport.

HinweisHinweis

Für die Verwendung von OPENROWSET ist es wichtig, nachvollziehen zu können, wie in SQL Server mit Identitätswechseln umgegangen wird. Informationen zu Sicherheitsaspekten finden Sie unter Importieren von Massendaten mithilfe von BULK INSERT oder OPENROWSET(BULK...).

Massenimport von SQLCHAR-, SQLNCHAR- oder SQLBINARY-Daten

Wenn keine maximale Länge für SQLCHAR-, SQLNCHAR- oder SQLBINARY-Daten angegeben wird, geht OPENROWSET(BULK...) davon aus, dass sie 8000 Bytes nicht überschreitet. Wenn sich die zu importierenden Daten in einem LOB-Datenfeld befinden, das Objekte vom Typ varchar(max), nvarchar(max) oder varbinary(max) mit mehr als 8000 Bytes enthält, müssen Sie eine XML-Formatdatei verwenden, die die maximale Länge für das Datenfeld definiert. Um die maximale Länge anzugeben, bearbeiten Sie die Formatdatei, und deklarieren Sie das Attribut MAX_LENGTH. Weitere Informationen finden Sie unter Schemasyntax für XML-Formatdateien.

HinweisHinweis

Bei einer automatisch generierten Formatdatei wird die Länge oder maximale Länge für ein LOB-Feld nicht angeben. Sie können eine Formatdatei jedoch bearbeiten und die Länge oder maximale Länge manuell angeben.

Massenexport und -import von SQLXML-Dokumenten

Verwenden Sie in der Formatdatei einen der folgenden Datentypen für den Massenexport oder -import von SQLXML-Daten.

Datentyp

Wirkung

SQLCHAR oder SQLVARYCHAR

Die Daten werden in der Clientcodepage oder in der Codepage, die durch die Sortierung impliziert wird, gesendet.

SQLNCHAR oder SQLNVARCHAR

Die Daten werden als Unicode gesendet.

SQLBINARY oder SQLVARYBIN

Die Daten werden ohne Konvertierung gesendet.

Berechtigungen

Die Berechtigungen für OPENROWSET werden anhand der Berechtigungen des an den OLE DB-Anbieter übergebenen Benutzernamens bestimmt. Für die Verwendung der BULK-Option ist die ADMINISTER BULK OPERATIONS-Berechtigung erforderlich.

Beispiele

A. Verwenden von OPENROWSET mit SELECT und dem OLE DB-Anbieter von SQL Server Native Client

Im folgenden Beispiel wird der OLE DB-Anbieter von SQL Server Native Client für den Zugriff auf die HumanResources.Department-Tabelle in der AdventureWorks-Datenbank auf dem Remoteserver Seattle1 verwendet. (Wenn Sie SQLNCLI verwenden, leitet SQL Server zur neuesten Version des OLE DB-Anbieters von SQL Server Native Client um.) Mithilfe einer SELECT-Anweisung wird das zurückgegebene Rowset definiert. Die Anbieterzeichenfolge enthält das Server-Schlüsselwort und das Trusted_Connection-Schlüsselwort. Diese Schlüsselwörter werden vom OLE DB-Anbieter von SQL Server Native Client erkannt.

SELECT a.*
FROM OPENROWSET('SQLNCLI', 'Server=Seattle1;Trusted_Connection=yes;',
     'SELECT GroupName, Name, DepartmentID
      FROM AdventureWorks.HumanResources.Department
      ORDER BY GroupName, Name') AS a;

B. Verwenden des Microsoft OLE DB-Anbieters für Jet

Im folgenden Beispiel wird mithilfe des Microsoft OLE DB-Anbieters für Jet auf die Customers-Tabelle in der Northwind-Datenbank von Microsoft Access zugegriffen.

HinweisHinweis

In diesem Beispiel wird vorausgesetzt, dass Access installiert ist. Um dieses Beispiel auszuführen, müssen Sie die Northwind-Datenbank installieren. Informationen zum Installieren der Northwind-Datenbank finden Sie unter Herunterladen der Beispieldatenbanken Northwind und pubs.

SELECT CustomerID, CompanyName
   FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
      'C:\Program Files\Microsoft Office\OFFICE11\SAMPLES\Northwind.mdb';
      'admin';'',Customers)
GO

C. Verwenden von OPENROWSET und einer weiteren Tabelle in INNER JOIN

Im folgenden Beispiel werden alle Daten aus der Customers-Tabelle in der Northwind-Datenbank der lokalen Instanz von SQL Server sowie alle Daten der Orders-Tabelle in der Northwind-Datenbank von Access auf dem gleichen Computer ausgewählt.

HinweisHinweis

In diesem Beispiel wird vorausgesetzt, dass Access installiert ist. Um dieses Beispiel auszuführen, müssen Sie die Northwind-Datenbank installieren. Informationen zum Installieren der Northwind-Datenbank finden Sie unter Herunterladen der Beispieldatenbanken Northwind und pubs.

USE Northwind  
GO
SELECT c.*, o.*
FROM Northwind.dbo.Customers AS c 
   INNER JOIN OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
   'C:\Program Files\Microsoft Office\OFFICE11\SAMPLES\Northwind.mdb';'admin';'', Orders)    
   AS o 
   ON c.CustomerID = o.CustomerID 
GO

D. Verwenden von OPENROWSET zum Masseneinfügen von Dateidaten in eine Spalte vom Typ 'varbinary(max)'

Das folgende Beispiel erstellt eine kleine Tabelle für Demonstrationszwecke und fügt Dateidaten aus der Datei Text1.txt, die im Stammverzeichnis C: gespeichert ist, in eine Spalte vom Datentyp varbinary(max) ein.

USE AdventureWorks
GO
CREATE TABLE myTable(FileName nvarchar(60), 
  FileType nvarchar(60), Document varbinary(max))
GO

INSERT INTO myTable(FileName, FileType, Document) 
   SELECT 'Text1.txt' AS FileName, 
      '.txt' AS FileType, 
      * FROM OPENROWSET(BULK N'C:\Text1.txt', SINGLE_BLOB) AS Document
GO

E. Verwenden des OPENROWSET BULK-Anbieters mit einer Formatdatei zum Abrufen von Zeilen aus einer Textdatei

Im folgenden Beispiel werden mithilfe einer Formatdatei Zeilen aus der durch Tabstopps getrennten Textdatei values.txt abgerufen, die die folgenden Daten enthält:

1     Data Item 1
2     Data Item 2
3     Data Item 3

Die Formatdatei values.fmt beschreibt die Spalten in values.txt:

9.0
2
1  SQLCHAR  0  10 "\t"        1  ID                SQL_Latin1_General_Cp437_BIN
2  SQLCHAR  0  40 "\r\n"      2  Description        SQL_Latin1_General_Cp437_BIN

In der folgenden Abfrage werden diese Daten abgerufen:

SELECT a.* FROM OPENROWSET( BULK 'c:\test\values.txt', 
   FORMATFILE = 'c:\test\values.fmt') AS a;

Zusätzliche Beispiele

Änderungsverlauf

Aktualisierter Inhalt

Ein wichtiger Hinweis zur Beschreibung von code_page wurde hinzugefügt.

Im Abschnitt "Hinweise" wurden Informationen zum Massenimportieren von SQLCHAR-, SQLNCHAR- oder SQLBINARY-Daten hinzugefügt.