BULK INSERT (Transact-SQL)

Aktualisiert: 12. Dezember 2006

Importiert eine Datendatei in eine Datenbanktabelle oder Sicht und verwendet dabei ein vom Benutzer angegebenes Format.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

BULK INSERT 
   [ database_name . [ schema_name ] . | schema_name . ] [ table_name | view_name ] 
      FROM 'data_file' 
     [ WITH 
        ( 
   [ [ , ] BATCHSIZE = batch_size ] 
   [ [ , ] CHECK_CONSTRAINTS ] 
   [ [ , ] CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' } ] 
   [ [ , ] DATAFILETYPE = 
      { 'char' | 'native'| 'widechar' | 'widenative' } ] 
   [ [ , ] FIELDTERMINATOR = 'field_terminator' ] 
   [ [ , ] FIRSTROW = first_row ] 
   [ [ , ] FIRE_TRIGGERS ] 
   [ [ , ] FORMATFILE = 'format_file_path' ] 
   [ [ , ] KEEPIDENTITY ] 
   [ [ , ] KEEPNULLS ] 
   [ [ , ] KILOBYTES_PER_BATCH = kilobytes_per_batch ] 
   [ [ , ] LASTROW = last_row ] 
   [ [ , ] MAXERRORS = max_errors ] 
   [ [ , ] ORDER ( { column [ ASC | DESC ] } [ ,...n ] ) ] 
   [ [ , ] ROWS_PER_BATCH = rows_per_batch ] 
   [ [ , ] ROWTERMINATOR = 'row_terminator' ] 
   [ [ , ] TABLOCK ] 
   [ [ , ] ERRORFILE = 'file_name' ] 
        )] 

Argumente

  • database_name
    Der Name der Datenbank, in der sich die angegebene Tabelle oder Sicht befindet. Fehlt die Angabe, ist dies die aktuelle Datenbank.
  • schema_name
    Der Name des Tabellen- oder Sichtschemas. schema_name ist optional, wenn das Standardschema des Benutzers, der den Massenimportvorgang ausführt, das Schema der angegebenen Tabelle oder Sicht ist. Wenn schema nicht angegeben wird und es sich bei dem Standardschema des Benutzers, der den Massenimportvorgang ausführt, nicht um das Schema der angegebenen Tabelle oder Sicht handelt, wird in SQL Server eine Fehlermeldung zurückgegeben, und der Massenimportvorgang wird abgebrochen.
  • table_name
    Der Name der Tabelle oder Sicht, in die der Massenimport von Daten erfolgen sollen. Es können nur Sichten verwendet werden, deren Spalten alle auf dieselbe Basistabelle verweisen. Weitere Informationen zu den Einschränkungen beim Laden von Daten in Sichten finden Sie unter INSERT (Transact-SQL).
  • 'data_file'
    Der vollständige Pfad der Datendatei mit den Daten, die in die angegebene Tabelle oder Sicht importiert werden sollen. BULK INSERT kann Daten von einem Datenträger importieren, einschließlich eines Netzwerks, einer Diskette, einer Festplatte usw.

    Für data_file muss ein gültiger Pfad auf dem Server, auf dem SQL Server ausgeführt wird, angegeben werden. Wenn data_file eine Remotedatei ist, geben Sie den UNC-Namen (Universal Naming Convention) an.

  • BATCHSIZE **=**batch_size
    Gibt die Anzahl von Zeilen in einem Batch an. Jeder Batch wird als eine Transaktion auf den Server kopiert. Falls ein Fehler erzeugt wird, führt SQL Server für die Transaktion jedes Batches ein Commit oder Rollback aus. Standardmäßig werden alle Daten, die sich in der angegebenen Datendatei befinden, als ein Batch behandelt.

    Weitere Informationen finden Sie unter Verwalten von Batches für den Massenimport.

  • CHECK_CONSTRAINTS
    Gibt an, dass alle Einschränkungen, die für die Zieltabelle oder -sicht gelten, während des Massenimportvorgangs überprüft werden müssen. Ohne die Option CHECK_CONSTRAINTS werden alle CHECK- und FOREIGN KEY-Einschränkungen ignoriert, und nach Abschluss des Vorgangs wird die Einschränkung in der Tabelle als nicht vertrauenswürdig gekennzeichnet.

    ms188365.note(de-de,SQL.90).gifHinweis:
    UNIQUE-, PRIMARY KEY- und NOT NULL-Einschränkungen werden immer erzwungen.

    An gewissen Punkten müssen Sie die Einschränkungen in der gesamten Tabelle überprüfen. Wenn die Tabelle vor dem Massenimportvorgang nicht leer war, kann der Aufwand einer erneuten Überprüfung der Einschränkung höher sein als das Anwenden von CHECK-Einschränkungen auf die inkrementellen Daten.

    Möglicherweise möchten Sie Einschränkungen deaktivieren (das Standardverhalten), wenn die Eingabedaten Zeilen enthalten, die die Einschränkungen verletzen. Wenn CHECK-Einschränkungen deaktiviert sind, können Sie die Daten importieren und dann Transact-SQL-Anweisungen verwenden, um die ungültigen Daten zu entfernen.

    ms188365.note(de-de,SQL.90).gifHinweis:
    Die Option MAXERRORS kann zur Einschränkungsüberprüfung nicht verwendet werden.
    ms188365.note(de-de,SQL.90).gifHinweis:
    In SQL Server 2005 erzwingt BULK INSERT neue Datenüberprüfungen, die möglicherweise zum Fehlschlagen vorhandener Skripts führen, wenn diese für ungültige Daten in einer Datendatei ausgeführt werden.

    Weitere Informationen finden Sie unter Steuern der Einschränkungsüberprüfung mithilfe von Massenimportvorgängen.

  • 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 Zeichenwerten enthalten, die größer als 127 oder kleiner als 32 sind.

    CODEPAGE-Wert Beschreibung

    ACP

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

    OEM (Standard)

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

    RAW

    Dies ist die schnellste Option, da keine Konvertierung von einer Codepage in eine andere erfolgt.

    code_page

    Bestimmte Codepagenummer, z. B. 850.

    Weitere Informationen finden Sie unter Kopieren von Daten zwischen unterschiedlichen Sortierungen.

  • FIELDTERMINATOR ='field_terminator'
    Gibt das Feldabschlusszeichen an, das für Datendateien vom Typ char und widechar verwendet werden soll. Standardmäßig wird \t (Tabstoppzeichen) als Feldabschlusszeichen verwendet. Weitere Informationen finden Sie unter Angeben von Feld- und Zeilenabschlusszeichen.
  • FIRSTROW **=**first_row
    Gibt die Nummer der ersten zu ladenden Zeile an. Der Standardwert gibt die erste Zeile in der angegebenen Datendatei an.

    ms188365.note(de-de,SQL.90).gifHinweis:
    Es ist nicht vorgesehen, dass das FIRSTROW-Attribut Spaltenheader überspringt. Wenn Zeilen ausgelassen werden, werden von SQL Server-Datenbankmodul nur die Feldabschlusszeichen berücksichtigt und die Daten in den Feldern von ausgelassenen Zeilen nicht überprüft.
  • FIRE_TRIGGERS
    Gibt an, dass INSERT-Trigger, die für die Zieltabelle definiert sind, während des Massenimportvorgangs ausgeführt werden. Falls Trigger für INSERT-Vorgänge in der Zieltabelle definiert sind, werden sie für jeden abgeschlossenen Batch ausgelöst.

    Wenn FIRE_TRIGGERS nicht angegeben ist, werden keine INSERT-Trigger ausgeführt.

    Weitere Informationen finden Sie unter Steuern der Triggerausführung beim Massenimport von Daten.

  • FORMATFILE ='format_file_path'
    Gibt den vollständigen Pfad einer Formatdatei an. Eine Formatdatei beschreibt die Datendatei, die gespeicherte Antworten enthält. Diese Antworten wurden mithilfe des Dienstprogramms bcp für die gleiche Tabelle oder Sicht erstellt. Die Formatdatei muss verwendet werden, wenn Folgendes zutrifft:

    • Die Datendatei enthält größere oder weniger Spalten als die Tabelle oder Sicht.
    • Die Spalten befinden sich in einer unterschiedlichen Reihenfolge.
    • Die Spaltentrennzeichen variieren.
    • Es liegen andere Änderungen im Datenformat vor. Formatdateien werden in der Regel mit dem Dienstprogramm bcp erstellt und nach Bedarf mit einem Text-Editor geändert. Weitere Informationen finden Sie unter bcp (Dienstprogramm).
  • KEEPIDENTITY
    Gibt an, dass Identitätswerte in der importierten Datendatei für die Identitätsspalte verwendet werden müssen. Wird KEEPIDENTITY nicht angegeben, werden die Identitätswerte für diese Spalte zwar überprüft, jedoch nicht importiert. SQL Server weist dann auf der Basis von Ausgangswerten und inkrementellen Werten, die beim Erstellen der Tabelle angegeben wurden, eindeutige Werte zu. Wenn die Datendatei keine Werte für die Identitätsspalte in der Tabelle oder Sicht enthält, geben Sie mithilfe einer Formatdatei an, dass die Identitätsspalte der Tabelle oder Sicht beim Importieren von Daten ausgelassen werden soll. SQL Server weist der Spalte automatisch eindeutige Werte zu. Weitere Informationen finden Sie unter DBCC CHECKIDENT (Transact-SQL).

    Weitere Informationen zum Beibehalten von Identitätswerten finden Sie unter Beibehalten von Identitätswerten beim Massenimport von Daten.

  • KILOBYTES_PER_BATCH = kilobytes_per_batch
    Gibt die ungefähre Datenmenge pro Batch in KB als kilobytes_per_batch an. Standardmäßig ist KILOBYTES_PER_BATCH unbekannt.

    Weitere Informationen finden Sie unter Verwalten von Batches für den Massenimport.

  • LASTROW****=**last_row
    Gibt die Nummer der letzten zu ladenden Zeile an. Der Standardwert ist 0, wodurch die Daten bis zur letzten Zeile in der angegebenen Datendatei geladen werden.
  • MAXERRORS = max_errors
    Gibt die maximale Anzahl von Syntaxfehlern an, die in den Daten zulässig sind, bevor der Massenimportvorgang abgebrochen wird. Jede Zeile, die beim Massenimportvorgang nicht importiert werden kann, wird ignoriert und zählt dabei als ein Fehler. Wenn max_errors nicht angegeben ist, wird der Standardwert 10 verwendet.

    ms188365.note(de-de,SQL.90).gifHinweis:
    Die Option MAX_ERRORS kann nicht zur Einschränkungsüberprüfung oder zum Konvertieren der Datentypen money und bigint verwendet werden.
  • ORDER ( { column [ ASC | DESC ] } [ ,... n ] )
    Gibt die Vorgehensweise beim Sortieren der Daten in der Datendatei an. Die Leistung des Massenimportierens wird verbessert, wenn die zu importierenden Daten entsprechend dem gruppierten Index der Tabelle sortiert sind (wenn zutreffend). Wenn die Datendatei in einer anderen Reihenfolge sortiert wird, die von der Reihenfolge eines Schlüssels des gruppierten Indexes abweicht, oder die Tabelle keinen gruppierten Index hat, wird die ORDER-Klausel ignoriert. Die angegebenen Namen der Spalten müssen gültige Spaltennamen in der Zieltabelle sein. Standardmäßig geht der Masseneinfügevorgang davon aus, dass die Datendatei nicht sortiert ist. Für die Optimierung des Massenimportvorgangs wird von SQL Server auch überprüft, ob die importierten Daten sortiert sind.

    Weitere Informationen finden Sie unter Steuern der Sortierreihenfolge beim Massenimport von Daten.

  • n
    Ein Platzhalter, der anzeigt, dass mehrere Spalten angegeben werden können.
  • ROWS_PER_BATCH **=**rows_per_batch
    Gibt die ungefähre Anzahl von Datenzeilen in der Datendatei an.

    Standardmäßig werden alle Daten in der Datendatei als einzelne Transaktion an den Server gesendet, und die Anzahl von Zeilen im Batch ist dem Abfrageoptimierer nicht bekannt. Wenn Sie ROWS_PER_BATCH (mit einem Wert > 0) angeben, verwendet der Server diesen Wert, um den Massenimportvorgang zu optimieren. Der für ROWS_PER_BATCH angegebene Wert sollte etwa der tatsächlichen Zeilenanzahl entsprechen.

    Weitere Informationen finden Sie unter Verwalten von Batches für den Massenimport.

  • ROWTERMINATOR ='row_terminator'
    Gibt das Zeilenabschlusszeichen an, das für char- und widechar-Datendateien verwendet werden soll. Standardmäßig wird \r\n (Neue-Zeile-Zeichen) als Zeilenabschlusszeichen verwendet. Weitere Informationen finden Sie unter Angeben von Feld- und Zeilenabschlusszeichen.
  • TABLOCK
    Gibt an, dass eine Sperre auf Tabellenebene für die Dauer des Massenimportvorgangs aktiviert wird. Eine Tabelle kann gleichzeitig von mehreren Clients geladen werden, wenn die Tabelle keine Indizes aufweist und TABLOCK angegeben ist. Standardmäßig wird das Sperrverhalten durch die Tabellenoption table lock on bulk load bestimmt. Da weniger Sperrkonflikte für die Tabelle auftreten, wenn diese während des Massenimportvorgangs gesperrt wird, verbessert sich die Leistung erheblich.

    Weitere Informationen finden Sie unter Steuern des Sperrverhaltens für den Massenimport.

  • 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 unverändert in diese Fehlerdatei kopiert.

    Die Fehlerdatei wird bei Ausführung des Befehls erstellt. Falls die Datei bereits vorhanden ist, tritt ein Fehler auf. 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. Sobald die Fehler korrigiert wurden, können die Daten geladen werden.

Hinweise

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

Die BULK INSERT-Anweisung kann innerhalb einer benutzerdefinierten Transaktion ausgeführt werden. Durch das Ausführen eines Rollbacks für eine benutzerdefinierte Transaktion, die eine BULK INSERT-Anweisung und eine BATCHSIZE-Klausel verwendet, um Daten mithilfe von mehreren Batches in eine Tabelle oder Sicht zu importieren, werden Rollbacks für alle an SQL Server gesendeten Batches ausgeführt.

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.

In SQL Server 2005 erzwingt BULK INSERT neue, strengere Datenüberprüfungen für die aus einer Datei gelesenen Daten, die möglicherweise zum Fehlschlagen vorhandener Skripts führen können, wenn diese für ungültige Daten in einer Datendatei ausgeführt werden. BULK INSERT überprüft nun z. B. Folgendes:

  • Die systemeigene Darstellung der Datentypen float oder real ist gültig.
  • Unicode-Daten besitzen eine gerade Bytelänge.

Formulare mit ungültigen Daten, für die in früheren Versionen von SQL Server ein Massenimportvorgang ausgeführt werden konnte, werden nun möglicherweise nicht geladen. In früheren Versionen von SQL Server tritt der Fehler erst auf, wenn ein Client versucht, auf die ungültigen Daten zuzugreifen. Durch die strengere Überprüfung in SQL Server 2005 werden überraschende Ergebnisse beim Abfragen der Daten nach dem Massenimportieren minimiert.

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 Codepage des Clients oder in der durch die Sortierung implizierte Codepage gesendet. Damit wird dieselbe Wirkung erzielt wie mit der Angabe von DATAFILETYPE ='char' ohne Formatdatei.

SQLNCHAR oder SQLNVARCHAR

Die Daten werden als Unicode-Daten gesendet. Damit wird dieselbe Wirkung erzielt wie mit der Angabe von DATAFILETYPE = 'widechar' ohne Formatdatei.

SQLBINARY oder SQLVARYBIN

Die Daten werden ohne Konvertierung gesendet.

Konvertierungen von Zeichenfolgen- in Dezimaldatentypen

In BULK INSERT-Vorgängen verwendete Konvertierungen von Zeichenfolgen- in Dezimaldatentypen folgen in SQL Server 2005 denselben Regeln wie die CONVERT-Funktion von Transact-SQL, insofern, als Zeichenfolgen mit numerischen Werten in wissenschaftlicher Schreibweise nicht akzeptiert werden. Daher behandelt BULK INSERT diese Zeichenfolgen als ungültige Werte und meldet Konvertierungsfehler.

ms188365.note(de-de,SQL.90).gifHinweis:
In SQL Server, Version 7.0, und in SQL Server 2000 wird die Konvertierung von Zeichenfolgen- in Dezimaldatentypen für Zeichenfolgen mit Werten in wissenschaftlicher Schreibweise von BULK INSERT unterstützt.

Verwenden Sie, um dieses Verhalten von SQL Server 2005 zu umgehen, eine Formatdatei zum Massenimport von float-Daten in wissenschaftlicher Schreibweise in Spalten im Dezimalformat. Beschreiben Sie in der Formatdatei diese Spalte explizit als vom Datentyp real oder float. Weitere Informationen zu diesen Datentypen finden Sie unter float und real (Transact-SQL).

ms188365.note(de-de,SQL.90).gifHinweis:
Formatdateien stellen real-Daten als SQLFLT4-Datentyp und float-Daten als SQLFLT8-Datentyp dar. Weitere Informationen zu XML-Formatdateien finden Sie unter Schemasyntax für XML-Formatdateien, Informationen zu Nicht-XML-Formatdateien unter Angeben des Dateispeichertyps mithilfe von bcp.

Beispiel: Importieren eines numerischen Wertes in wissenschaftlicher Schreibweise

In diesem Beispiel wird die folgende Tabelle verwendet:

CREATE TABLE t_float(c1 float, c2 decimal (5,4))

Der Benutzer möchte nun per Massenimport Daten in die t_float-Tabelle kopieren. Die Datendatei C:\t_float-c.dat enthält float-Daten in wissenschaftlicher Schreibweise, wie zum Beispiel:

8.0000000000000002E-28.0000000000000002E-2

Diese Daten können jedoch mithilfe von BULK INSERT nicht direkt in die t_float-Tabelle importiert werden, da die zweite Spalte der Tabelle, c2, den decimal-Datentyp verwendet. Daher ist eine Formatdatei erforderlich. In der Formatdatei müssen die float-Daten in wissenschaftlichem Format dem Dezimalformat der Spalte c2 zugeordnet werden.

Die folgende Formatdatei verwendet den SQLFLT8-Datentyp, um der zweiten Spalte das zweite Datenfeld zuzuordnen:

<?xml version="1.0"?>

<BCPFORMAT xmlns="https://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<RECORD>

<FIELD ID="1" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="30"/>

<FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="30"/> </RECORD> <ROW>

<COLUMN SOURCE="1" NAME="c1" xsi:type="SQLFLT8"/>

<COLUMN SOURCE="2" NAME="c2" xsi:type="SQLFLT8"/> </ROW> </BCPFORMAT>

Geben Sie die folgende Transact-SQL-Anweisung aus, und verwenden Sie dabei für diese Formatdatei den Dateinamen C:\t_floatformat-c-xml.xml, damit die Testdaten in die Testtabelle importiert werden:

BULK INSERT bulktest..t_float
FROM 'C:\t_float-c.dat' WITH (FORMATFILE='C:\t_floatformat-c-xml.xml');
GO

Berechtigungen

Erfordert die Berechtigungen INSERT und ADMINISTER BULK OPERATIONS. Darüber hinaus ist die ALTER TABLE-Berechtigung erforderlich, wenn mindestens eine der folgenden Bedingungen zutrifft:

  • Es sind Einschränkungen vorhanden, und die Option CHECK_CONSTRAINTS ist nicht angegeben.
    ms188365.note(de-de,SQL.90).gifHinweis:
    Das Deaktivieren von Einschränkungen entspricht dem Standardverhalten. Verwenden Sie die Option CHECK_CONSTRAINTS, um Einschränkungen explizit zu überprüfen.
  • Es sind Trigger vorhanden, und die Option FIRE_TRIGGER ist nicht angegeben.
    ms188365.note(de-de,SQL.90).gifHinweis:
    Standardmäßig werden Trigger nicht ausgelöst. Verwenden Sie die Option FIRE_TRIGGER, um Trigger explizit auszulösen.
  • Sie verwenden die Option KEEPIDENTITY zum Importieren von Identitätswerten aus der Datendatei.

Delegierung von Sicherheitskonten (Identitätswechsel)

Falls ein Benutzer von SQL Server mithilfe der Windows-Authentifizierung angemeldet ist, kann der Benutzer nur die Dateien lesen, auf die das Benutzerkonto zugreifen kann, unabhängig vom Sicherheitsprofil des SQL Server-Prozesses.

Beim Ausführen der BULK INSERT-Anweisung mit sqlcmd oder osql auf einem Computer, um Daten in SQL Server auf einem zweiten Computer einzufügen, und beim Angeben von data_file auf einem dritten Computer mithilfe eines UNC-Pfades wird möglicherweise der Fehler 4861 ausgegeben.

Verwenden Sie die SQL Server-Authentifizierung, um diesen Fehler zu beheben, und geben Sie einen SQL Server-Anmeldenamen an, der das Sicherheitsprofil des SQL Server-Prozesskontos verwendet, oder konfigurieren Sie Windows so, dass die Delegierung von Sicherheitskonten aktiviert ist. Informationen zum Aktivieren der Delegierung für Benutzerkonten finden Sie in der Windows-Hilfe.

Weitere Informationen zu diesem und anderen Sicherheitsaspekten bezüglich der Verwendung von BULK INSERT finden Sie unter Importieren von Massendaten mithilfe von BULK INSERT oder OPENROWSET(BULK...).

Beispiele

A. Verwenden von |-Zeichen zum Importieren von Daten aus einer Datei

Im folgenden Beispiel werden Bestellinformationen aus der angegebenen Datendatei in die AdventureWorks.Sales.SalesOrderDetail-Tabelle importiert, wobei der senkrechte Strich (|) als Feldabschlusszeichen und |\n als Zeilenabschlusszeichen verwendet wird.

BULK INSERT AdventureWorks.Sales.SalesOrderDetail
   FROM 'f:\orders\lineitem.tbl'
   WITH 
      (
         FIELDTERMINATOR =' |',
         ROWTERMINATOR =' |\n'
      )

B. Verwenden des FIRE_TRIGGERS-Arguments

Im folgenden Beispiel wird das FIRE_TRIGGERS-Argument angegeben.

BULK INSERT AdventureWorks.Sales.SalesOrderDetail
   FROM 'f:\orders\lineitem.tbl'
   WITH
     (
        FIELDTERMINATOR =' |',
        ROWTERMINATOR = ':\n',
        FIRE_TRIGGERS
      )

C. Verwenden des Zeilenvorschubs als Zeilenabschlusszeichen

Im folgenden Beispiel wird eine Datei importiert, in der der Zeilenvorschub als ein Zeilenabschlusszeichen verwendet wird, z. B. eine UNIX-Ausgabe:

DECLARE @bulk_cmd varchar(1000)
SET @bulk_cmd = 'BULK INSERT AdventureWorks.Sales.SalesOrderDetail
FROM ''<drive>:\<path>\<filename>'' 
WITH (ROWTERMINATOR = '''+CHAR(10)+''')'
EXEC(@bulk_cmd)

Zusätzliche Beispiele

Weitere Beispiele für BULK INSERT finden Sie in den folgenden Themen:

Siehe auch

Verweis

OPENROWSET (Transact-SQL)
sp_tableoption (Transact-SQL)

Andere Ressourcen

Vorbereiten von Daten für den Massenexport oder -import
Datenformate für das Importieren oder Exportieren von Daten
Formatdateien zum Importieren oder Exportieren von Daten
Optimieren der Leistung des Massenimportierens
Informationen zu Massenimport- und Massenexportvorgängen
Szenarien für den Massenimport und -export von Daten
bcp (Dienstprogramm)
Verwenden von SQL-Sortierungen
Paralleles Importieren von Daten mit Sperren auf Tabellenebene

Hilfe und Informationen

Informationsquellen für SQL Server 2005

Änderungsverlauf

Version Verlauf

12. Dezember 2006

Geänderter Inhalt:
  • In der Beschreibung des FIRSTROW-Arguments wurde ein Hinweis aktualisiert.
  • Die Beschreibung von CHECK_CONSTRAINTS wurde dahingehend korrigiert, dass diese Option zum Ignorieren von CHECK- und FOREIGN KEY-Einschränkungen führt.

17. Juli 2006

Geänderter Inhalt:
  • Die Beschreibung für das ORDER-Argument wurde aktualisiert.

14. April 2006

Neuer Inhalt:
  • Der Abschnitt mit zusätzlichen Beispielen wurde hinzugefügt.
Geänderter Inhalt:
  • Die Schreibweise der ADMINISTER BULK OPERATIONS-Berechtigung wurde korrigiert.
  • Die Erfordernis der ALTER TABLE-Berechtigung wurde aktualisiert.