Hilfsprogramms bcp
Das bcp-Hilfsprogramm kopiert Daten zwischen einer Instanz von Microsoft SQL Server und einer Datendatei in einem vom Benutzer angegebenen Format. Das Hilfsprogramm bcp kann verwendet werden, um große Mengen neuer Zeilen in SQL Server -Tabellen zu importieren oder um Daten aus Tabellen in Datendateien zu exportieren. Außer in Verbindung mit der Option queryout sind für das Hilfsprogramm keine Kenntnisse von Transact-SQL erforderlich. Um Daten in eine Tabelle zu importieren, müssen Sie entweder eine für diese Tabelle erstellte Formatdatei verwenden oder die Struktur der Tabelle und die Art der Daten kennen, die in den Tabellenspalten zulässig sind.
Die Syntaxkonventionen, die für die bcp-Syntax verwendet werden, finden Sie unter Transact-SQL Syntax Conventions (Transact-SQL).
Hinweis
Wenn Sie Ihre Daten mit bcp sichern, müssen Sie zum Aufzeichnen des Datenformats eine Formatdatei erstellen. bcp-Datendateien enthalten keine Schema- oder Formatinformationen. Daher können Sie die Daten möglicherweise nicht mehr importieren, wenn Sie eine Tabelle löschen und keine Formatdatei vorhanden ist.
Syntax
bcp [database_name.] schema.{table_name | view_name | "query" {indata_file | outdata_file | queryoutdata_file | format nul}
[-apacket_size]
[-bbatch_size]
[-c]
[-C { ACP | OEM | RAW | code_page } ]
[-ddatabase_name]
[-eerr_file]
[-E]
[-fformat_file]
[-Ffirst_row]
[-h"hint [,...n]"]
[-iinput_file]
[-k]
[-Kapplication_intent]
[-Llast_row]
[-mmax_errors]
[-n]
[-N]
[-ooutput_file]
[-Ppassword]
[-q]
[-rrow_term]
[-R]
[-S [server_name[\instance_name]]
[-tfield_term]
[-T]
[-Ulogin_id]
[-v]
[-V (80 | 90 | 100 | 110)]
[-w]
[-x]
/?
Argumente
data_file
Der vollständige Pfad der Datendatei. Wenn Daten in SQL Servermassenimportiert werden, enthält die Datendatei die Daten, die in die angegebene Tabelle oder Sicht kopiert werden sollen. Beim Massenexportieren aus SQL Serverenthält die Datendatei die Daten, die aus der Tabelle oder Sicht kopiert wurden. Der Pfad kann 1 bis 255 Zeichen enthalten. Die Datendatei kann maximal 263- 1 Zeilen enthalten.
database_name
Der Name der Datenbank, in der die angegebene Tabelle oder Sicht vorhanden ist. Wenn kein Name angegeben ist, wird diese Datenbank als Standarddatenbank des Benutzers verwendet.
Sie können den Datenbanknamen mit d-
auch explizit angeben.
in data_file | data_file | Abfrageformatdata_file | Format nul
Gibt die Richtung des Massenkopierens wie folgt an:
in werden Daten aus einer Datei in die Datenbanktabelle oder -sicht kopiert.
out werden Daten aus der Datenbanktabelle oder -sicht in eine Datei kopiert. Wenn Sie eine vorhandene Datei angeben, wird die Datei überschrieben. Beachten Sie, dass das Hilfsprogramm bcp beim Extrahieren von Daten leere Zeichenfolgen als NULL-Zeichenfolgen und NULL-Zeichenfolgen als leere Zeichenfolgen darstellt.
queryout werden Daten aus einer Abfrage kopiert. Diese Option muss nur beim Massenkopieren von Daten über eine Abfrage angegeben werden.
Format erstellt eine Formatdatei basierend auf der angegebenen Option (-n,
-c
,-w
, oder -N) und den Tabellen- oder Ansichtstrennzeichen. Beim Massenkopieren von Daten kann der Befehl bcp auf eine Formatdatei verweisen. Dies erspart Ihnen die wiederholte interaktive Eingabe von Formatinformationen. Für die Option format ist die Option -f erforderlich. Zum Erstellen einer XML-Formatdatei muss zudem die Option -x angegeben werden. Weitere Informationen finden Sie unter Erstellen einer Formatdatei (SQL Server). Sie müssen nul als Wert angeben (format nul).
owner
Dies ist der Namen des Besitzers der Tabelle oder Sicht. owner ist optional, wenn der Benutzer, der den Vorgang ausführt, der Besitzer der angegebenen Tabelle oder Sicht ist. Wenn der Besitzer nicht angegeben ist und der Benutzer, der den Vorgang ausführt, nicht die angegebene Tabelle oder Ansicht besitzt, gibt SQL Server eine Fehlermeldung zurück, und der Vorgang wird abgebrochen.
" Abfrage "
Ist eine Transact-SQL-Abfrage, die ein Resultset zurückgibt. Wenn die Abfrage mehrere Resultsets zurückgibt, wird nur das erste Resultset in die Datendatei kopiert; nachfolgende Resultsets werden nicht berücksichtigt. Schließen Sie die Abfrage in doppelte Anführungszeichen und alle Elemente, die in die Abfrage eingebettet sind, in einfache Anführungszeichen ein. queryout muss auch angegeben werden, wenn Sie Daten aus einer Abfrage massenkopieren.
Die Abfrage kann auf eine gespeicherte Prozedur verweisen, sofern alle Tabellen, auf die innerhalb der gespeicherten Prozedur verwiesen werden, vor der Ausführung der bcp-Anweisung vorhanden sind. Wenn die gespeicherte Prozedur beispielsweise eine temporäre Tabelle generiert, tritt bei der bcp -Anweisung ein Fehler auf, da die temporäre Tabelle nur zur Laufzeit und nicht zum Zeitpunkt der Anweisungsausführung verfügbar ist. Ziehen Sie in diesem Fall in Erwägung, die Ergebnisse der gespeicherten Prozedur in eine Tabelle einzufügen und dann bcp zum Kopieren der Daten aus der Tabelle in eine Datendatei zu verwenden.
table_name
Der Name der Zieltabelle, wenn Daten in SQL Server importiert werden (in), oder der Name der Quelltabelle, wenn Daten aus SQL Server exportiert werden (out).
view_name
Der Name der Zielsicht, wenn Daten in SQL Server kopiert werden (in), oder der Name der Quellsicht, wenn Daten aus SQL Server kopiert werden (out). Als Zielsichten können nur Sichten verwendet werden, in denen alle Spalten auf dieselbe Tabelle verweisen. Weitere Informationen zu den Einschränkungen beim Kopieren von Daten in Sichten finden Sie unter INSERT (Transact-SQL).
-a Paketgröße
Gibt an, wie viele Bytes pro Netzwerkpaket an den Server bzw. vom Server gesendet werden. Eine Serverkonfigurationsoption kann mithilfe von SQL Server Management Studio (oder der gespeicherten Systemprozedur sp_configure ) festgelegt werden. Die Serverkonfigurationsoption kann jedoch mithilfe dieser Option einzeln überschrieben werden. packet_size kann einen Wert von 4096 bis 65535 Bytes annehmen. Der Standardwert ist 4096.
Durch einen höheren Wert für die Paketgröße kann die Leistung von Massenkopiervorgängen verbessert werden. Wenn eine größere Paketgröße angefordert, aber nicht erteilt wird, wird die Standardeinstellung verwendet. Die vom Hilfsprogramm bcp generierte Leistungsstatistik zeigt die verwendete Paketgröße an.
-b batch_size
Gibt die Anzahl von Zeilen pro importierten Datenbatch an. Jeder Batch wird als separate Transaktion importiert und protokolliert, für die erst dann ein Commit ausgeführt wird, nachdem der gesamte Batch importiert wurde. Standardmäßig werden alle Zeilen in der Datendatei als jeweils ein Batch importiert. Um die Zeilen auf mehrere Batches aufzuteilen, geben Sie mit batch_size eine Batchgröße an, die kleiner ist als die Anzahl von Zeilen in der Datendatei. Wenn die Transaktion für einen Batch einen Fehler erzeugt, wird nur für die Einfügungen aus dem aktuellen Batch ein Rollback ausgeführt. Auf Batches, die bereits durch Transaktionen importiert wurden, für die ein Commit ausgeführt wurde, wirken sich spätere Fehler nicht aus.
Verwenden Sie diese Option nicht in Verbindung mit der Option **-h"**ROWS_PER_BATCH=bb
".
-c
Führt den Vorgang mithilfe eines Zeichendatentyps aus. Diese Option fordert nicht für jedes Feld auf; sie wird char
als Speichertyp ohne Präfixe und mit \t (Tabstoppzeichen) als Feldtrennzeichen und \r\n (Zeilenumbruchzeichen) als Zeilenbeschriftung verwendet. -c
ist nicht kompatibel mit -w
.
Weitere Informationen finden Sie unter Verwenden des Zeichenformats zum Importieren oder Exportieren von Daten (SQL Server).
-C { ACP | OEM | RAW | Codepage }
Gibt die Codepage für die in der Datendatei enthaltenen Daten an. code_page ist nur relevant, wenn die Daten Zeichenwerte enthaltenchar
, varchar
die text
größer als 127 oder kleiner als 32 sind.
Hinweis
Sie sollten für jede Spalte einen Sortierungsnamen in einer Formatdatei angeben.
Codepagewert | BESCHREIBUNG |
---|---|
ACP | ANSI/Microsoft Windows (ISO 1252). |
OEM | Standardcodepage, die vom Client verwendet wird. Die Standardcodepage, die verwendet wird, wenn -C nicht angegeben wird. |
RAW | Es erfolgt keine Konvertierung von einer Codepage zu einer anderen. Dies ist die schnellste Option, da keine Konvertierung vorgenommen wird. |
Codepage | Bestimmte Codepagenummer, z. B. 850. ** Wichtig ** SQL Server unterstützt keine Codepage 65001 (UTF-8-Codierung). |
-d
database_name
Gibt die Datenbank an, mit der eine Verbindung hergestellt werden soll. bcp.exe stellt standardmäßig eine Verbindung mit der Standarddatenbank des Benutzers her. Wenn -d
database_name und ein dreiteiliger Name (database_name.schema.table, der als erster Parameter an bcp.exe übergeben wird) angegeben wird, tritt ein Fehler auf, da Sie den Datenbanknamen nicht zweimal angeben können. Wenn database_name mit einem Bindestrich (-) oder einem Schrägstrich (/) beginnt, fügen Sie kein Leerzeichen zwischen -d
und dem Datenbanknamen hinzu.
-e err_file
Gibt den vollständigen Pfad einer Fehlerdatei an, in der alle Zeilen gespeichert werden, die das bcp -Hilfsprogramm nicht von der Datei in die Datenbank übertragen kann. Die durch den bcp -Befehl generierten Fehlermeldungen werden an die Arbeitsstation des Benutzers gesendet. Wenn diese Option nicht verwendet wird, wird keine Fehlerdatei erstellt.
Wenn Fehlerdatei mit einem Bindestrich (-) oder einem Schrägstrich (/) beginnt, darf kein Leerzeichen zwischen -e und dem Fehlerdatei -Wert enthalten sein.
-E
Gibt an, dass der oder die Identitätswerte in der importierten Datendatei für die Identitätsspalte verwendet werden sollen. Wenn -E nicht angegeben wird, werden die Identitätswerte für diese Spalte in der zu importierenden Datendatei ignoriert. SQL Server weist automatisch eindeutige Werte zu, basierend auf den Ausgangswerten und den inkrementellen Werten, die beim Erstellen der Tabelle angegeben wurden.
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).
Für die Option -E sind besondere Berechtigungen erforderlich. Weitere Informationen finden Sie unter „Hinweise“ weiter unten in diesem Thema.
-f format_file
Gibt den vollständigen Pfad einer Formatdatei an. Die Bedeutung dieser Option hängt von der Umgebung ab, in der sie verwendet wird. Folgende Bedeutungen sind möglich:
Wird -f mit der Option format verwendet, wird die angegebene Formatdatei für die angegebene Tabelle oder Sicht erstellt. Zum Erstellen einer XML-Formatdatei müssen Sie zudem die Option -x angeben. Weitere Informationen finden Sie unter Erstellen einer Formatdatei (SQL Server).
Wird -f mit der Option in oder out verwendet, ist eine bereits vorhandene Formatdatei erforderlich.
Hinweis
Die Verwendung einer Formatdatei mit der Option in oder out ist optional. Wenn die Option -f nicht angegeben ist, wenn -n,
-c
,-w
oder -N nicht angegeben ist, werden die Eingabeaufforderungen zum Formatieren von Informationen aufgefordert und können Ihre Antworten in einer Formatdatei speichern (deren Standarddateiname Bcp.fmt ist).
Wenn Fehlerdatei mit einem Bindestrich (-) oder einem Schrägstrich (/) beginnt, darf kein Leerzeichen zwischen -f und dem Fehlerdatei -Wert enthalten sein.
-F first_row
Gibt die Nummer der ersten Zeile an, die aus einer Tabelle exportiert oder von einer Datendatei importiert werden soll. Für diesen Parameter muss ein Wert größer als (>) 0, jedoch kleiner (<) oder gleich (=) der Gesamtanzahl der Zeilen angegeben werden. Fehlt dieser Parameter, wird standardmäßig die erste Zeile der Datei angenommen.
erste_Zeile kann eine positive ganze Zahl mit einem Wert bis zu 2^63-1 sein. -Ferste_Zeile ist 1-basiert.
-h" hint[ ,... n] "
Gibt den oder die Hinweise an, die beim Massenimportieren von Daten in eine Tabelle oder Sicht verwendet werden sollen.
ORDER**(column[ASC | DESC] [,...n])**
Die Sortierreihenfolge der Daten in der Datendatei. Die Leistung des Massenkopierens wird verbessert, wenn die zu importierenden Daten entsprechend dem gruppierten Index der Tabelle (falls vorhanden) sortiert sind. Wenn die Datendatei in einer anderen Reihenfolge, d. h. nicht nach einem gruppierten Indexschlüssel sortiert ist, oder wenn es keinen gruppierten Index für die Tabelle gibt, wird die ORDER-Klausel ignoriert. Die angegebenen Spaltennamen müssen gültige Spaltennamen in der Zieltabelle sein. Standardmäßig geht bcp davon aus, dass die Datendatei nicht sortiert ist. Beim optimierten Massenimport wird in SQL Server auch überprüft, ob die importierten Daten sortiert sind.
ROWS_PER_BATCH =bb
Die Anzahl von Datenzeilen pro Batch (als bb). Dieser Hinweis wird verwendet, wenn -b nicht angegeben wird. Er bewirkt, dass die gesamte Datendatei in einer einzigen Transaktion an den Server gesendet wird. Der Server optimiert das Massenladen entsprechend dem Wert von bb. Standardmäßig ist ROWS_PER_BATCH unbekannt.
= KILOBYTES_PER_BATCH cc
Die ungefähre Anzahl von Kilobytes (KB) an Daten pro Batch (als cc). In der Standardeinstellung ist KILOBYTES_PER_BATCH unbekannt.
TABLOCK
Gibt an, dass eine Massenupdatesperre auf Tabellenebene für die Dauer des Massenladens aktiviert wird. Andernfalls wird eine Sperre auf Zeilenebene aktiviert. Dieser Hinweis verbessert die Leistung beträchtlich, da weniger Sperrkonflikte für die Tabelle auftreten, wenn diese während des Massenkopiervorgangs gesperrt 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 loadbestimmt.
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 den CHECK_CONSTRAINTS-Hinweis werden alle CHECK- und FOREIGN KEY-Einschränkungen ignoriert. Nach dem Vorgang wird die Einschränkung für die Tabelle als nicht vertrauenswürdig markiert.
Hinweis
UNIQUE-, PRIMARY KEY- und NOT NULL-Einschränkungen werden immer erzwungen.
Zu einem bestimmten Zeitpunkt sollten Sie allerdings die Einschränkungen für die gesamte Tabelle überprüfen. Wenn die Tabelle vor dem Massenimportvorgang nicht leer war, überschreitet der Aufwand der erneuten Überprüfung möglicherweise denjenigen der Anwendung von CHECK-Einschränkungen auf die inkrementellen Daten. Daher empfiehlt es sich normalerweise, die Einschränkungsüberprüfung beim inkrementellen Massenimportieren zu aktivieren.
Die Deaktivierung von Einschränkungen (das Standardverhalten) kann z. B. erwünscht sein, wenn die Eingabedaten Zeilen enthalten, die Einschränkungen verletzen. Wenn CHECK-Einschränkungen deaktiviert sind, können Sie die Daten importieren und anschließend Transact-SQL -Anweisungen verwenden, um ungültige Daten zu entfernen.
Hinweis
bcp erzwingt nun Datenüberprüfungen, die dazu führen können, dass Skripts einen Fehler erzeugen, wenn sie für ungültige Daten in einer Datendatei ausgeführt werden.
Hinweis
Die Option -m max_Fehler gilt nicht für die Einschränkungsüberprüfung.
FIRE_TRIGGERS
Wird mit dem in -Argument angegeben und bewirkt, dass jeder INSERT-Trigger, der für die Zieltabelle definiert ist, während des Massenkopiervorgangs ausgeführt wird. Wenn FIRE_TRIGGERS nicht angegeben wird, werden keine INSERT-Trigger ausgeführt. FIRE_TRIGGERS wird für die Argumente out, queryoutund format ignoriert.
-i input_file
Gibt den Namen einer Antwortdatei an, die die Antworten auf die Eingabeaufforderungsfragen für jedes Datenfeld enthält, wenn eine Massenkopie im interaktiven Modus ausgeführt wird (-n, -c
, -w
oder -N nicht angegeben).
Wenn Eingabedatei mit einem Bindestrich (-) oder einem Schrägstrich (/) beginnt, darf kein Leerzeichen zwischen -i und dem Eingabedatei -Wert enthalten sein.
-k
Gibt an, dass während des Vorgangs keine Standardwerte in leere Spalten eingefügt werden, sondern ein NULL-Wert für diese Spalten beibehalten werden soll. Weitere Informationen finden Sie unter Beibehalten von NULL-Werten oder Verwenden von Standardwerten während des Massenimports (SQL Server).
-K Anwendungsabsicht
Deklariert den Arbeitsauslastungstyp der Anwendung beim Herstellen einer Verbindung mit einem Server. Der einzig mögliche Wert ist ReadOnly. Wenn -K nicht angegeben wird, unterstützt das bcp-Hilfsprogramm keine Konnektivität zu einem sekundären Replikat in einer AlwaysOn-Verfügbarkeitsgruppe. Weitere Informationen finden Sie unter Active Secondaries: Lesbare sekundäre Replikate (AlwaysOn-Verfügbarkeitsgruppen).For more information, see Active Secondaries: Readable Secondary Replicas (AlwaysOn Availability Groups).
-L last_row
Gibt die Nummer der letzten Zeile an, die aus einer Tabelle exportiert oder von einer Datendatei importiert werden soll. Für diesen Parameter muss ein Wert größer als (>) 0, jedoch kleiner (<) oder gleich (=) der Nummer der letzten Zeile angegeben werden. Fehlt dieser Parameter, wird standardmäßig die letzte Zeile der Datei angenommen.
letzte_Zeile kann eine positive ganze Zahl mit einem Wert bis zu 2^63-1 sein.
-m max_errors
Gibt an, wie viele Syntaxfehler maximal auftreten können, bevor der bcp -Vorgang abgebrochen wird. Ein Syntaxfehler setzt einen Fehler bei der Datenkonvertierung in den Zieldatentyp voraus. Der Wert von max_Fehler schließt alle Fehler aus, die nur auf dem Server erkannt werden können, z.B. Einschränkungsverletzungen.
Eine Zeile, die vom Hilfsprogramm bcp nicht kopiert werden kann, wird ignoriert und als ein Fehler gezählt. Wenn diese Option nicht enthalten ist, wird der Standardwert 10 verwendet.
Hinweis
Die Option "-m " gilt auch nicht für die Konvertierung der money
Datentypen oder bigint
Datentypen.
-n
Führt das Massenkopieren mithilfe der systemeigenen (Datenbank-)Datentypen der Daten aus. Diese Option fordert für keines der Felder zu einer Eingabe auf; es werden die systemeigenen Werte verwendet.
Weitere Informationen finden Sie unter Verwenden des nativen Formats zum Importieren oder Exportieren von Daten (SQL Server).
-N
Führt den Massenkopiervorgang mithilfe der systemeigenen (Datenbank-)Datentypen für Daten, die keinen Zeichendatentyp haben, und mithilfe von Unicode-Zeichen für Zeichendaten aus. Diese Option bietet ein besseres Leistungsverhalten als die Option -w
und sollte verwendet werden, um Daten mithilfe einer Datendatei zwischen SQL Server-Instanzen zu übertragen. Die Option fordert nicht für jedes Feld zu einer Eingabe auf. Verwenden Sie diese Option, wenn Sie Daten mit erweiterten ANSI-Zeichen übertragen und die Leistungsvorteile des einheitlichen Modus nutzen möchten.
Weitere Informationen finden Sie unter Verwenden des nativen Unicode-Formats zum Importieren oder Exportieren von Daten (SQL Server).
Wenn Sie Daten mithilfe von bcp.exe mit -N in dasselbe Tabellenschema exportieren und dann importieren, wird möglicherweise eine Abkürzungswarnung angezeigt, wenn eine Spalte mit fester Länge, nicht-Unicode-Zeichen (z char(10)
. B. ) vorhanden ist.
Die Warnung kann ignoriert werden. Eine Möglichkeit zum Auflösen dieser Warnung besteht darin, -n anstelle von -Nzu verwenden.
-o Ausgabedatei
Gibt den Namen einer Datei an, in die die Ausgabe geschrieben wird, die von der Eingabeaufforderung umgeleitet wurde.
Wenn Ausgabedatei mit einem Bindestrich (-) oder einem Schrägstrich (/) beginnt, darf kein Leerzeichen zwischen -o und dem Ausgabedatei -Wert enthalten sein.
-P Kennwort
Gibt das Kennwort für die Anmelde-ID an. Wenn diese Option nicht verwendet wird, fordert der Befehl bcp zur Eingabe eines Kennworts auf. Wenn diese Option am Ende der Befehlszeile ohne Kennwort verwendet wird, verwendet bcp das Standardkennwort (NULL).
Wichtig
Verwenden Sie kein leeres Kennwort. Verwenden Sie ein sicheres Kennwort.
Zum Maskieren des Kennworts sollten Sie die Option -P nicht in Verbindung mit der Option -U angeben. Drücken Sie stattdessen nach der Angabe von bcp mit der Option -U und anderen Schaltern (geben Sie -Pnicht an) die EINGABETASTE. Sie werden daraufhin zur Angabe eines Kennworts aufgefordert. Durch diese Methode wird sichergestellt, dass das Kennwort bei der Eingabe maskiert wird.
Wenn Kennwort mit einem Bindestrich (-) oder einem Schrägstrich (/) beginnt, darf kein Leerzeichen zwischen -P und dem Kennwort -Wert enthalten sein.
-q
Führt die SET QUOTED_IDENTIFIERS ON-Anweisung in der Verbindung zwischen dem bcp -Hilfsprogramm und einer SQL Server-Instanz aus. Verwenden Sie diese Option, wenn Sie einen Datenbank-, Besitzer-, Tabellen- oder Sichtnamen angeben möchten, der ein Leerzeichen oder ein einfaches Anführungszeichen enthält. Schließen Sie den gesamten dreiteiligen Tabellen- oder Sichtnamen in Anführungszeichen ("") ein.
Um einen Datenbanknamen anzugeben, der ein Leerzeichen oder ein einfaches Anführungszeichen enthält, müssen Sie die Option -q verwenden.
-q
gilt nicht für Werte, die an -d
übergeben wurden.
Weitere Informationen finden Sie unter Hinweiseweiter unten in diesem Thema.
-r row_term
Gibt das Zeilenabschlusszeichen an. Der Standardwert ist \n (Zeilenumbruchzeichen). Mit diesem Parameter können Sie das standardmäßige Zeilenabschlusszeichen überschreiben. Weitere Informationen finden Sie unter Angeben von Feld- und Zeilenabschlusszeichen (SQL Server).
Wenn Sie das Zeilenabschlusszeichen in Hexadezimalschreibweise in einem bcp.exe-Befehl angeben, wird der Wert bei 0x00 abgeschnitten. Wenn Sie 0x410041 angeben, wird z. B. 0x41 verwendet.
Wenn Zeilenabschluss mit einem Bindestrich (-) oder einem Schrägstrich (/) beginnt, darf kein Leerzeichen zwischen -r und dem Zeilenabschluss -Wert enthalten sein.
-R
Gibt an, dass beim Massenkopieren von Währungs-, Datums- und Zeitdaten in SQL Server das Länderformat verwendet wird, das durch die Gebietsschemaeinstellung des Clientcomputers definiert wird. Standardmäßig werden Ländereinstellungen ignoriert.
-S server_name[ \instance_name]
Gibt die SQL Server-Instanz an, mit der eine Verbindung hergestellt werden soll. Wenn kein Server angegeben wird, stellt das Hilfsprogramm bcp eine Verbindung mit der Standardinstanz von SQL Server auf dem lokalen Computer her. Diese Option ist erforderlich, wenn bcp von einem Remotecomputer im Netzwerk oder von einer lokalen benannten Instanz ausgeführt wird. Um eine Verbindung mit der Standardinstanz von SQL Server auf einem Server herzustellen, geben Sie lediglich Servernamean. Wenn Sie eine Verbindung mit einer benannten Instanz von SQL Server herstellen möchten, geben Sie server_name*\*instance_name an.
-t
field_term
Gibt das Feldabschlusszeichen an. Der Standardwert ist \t (Tabstoppzeichen). Mit diesem Parameter können Sie das standardmäßige Feldabschlusszeichen überschreiben. Weitere Informationen finden Sie unter Angeben von Feld- und Zeilenabschlusszeichen (SQL Server).
Wenn Sie das Feldabschlusszeichen in Hexadezimalschreibweise in einem bcp.exe-Befehl angeben, wird der Wert bei 0x00 abgeschnitten. Wenn Sie 0x410041 angeben, wird z. B. 0x41 verwendet.
Wenn field_term mit einem Bindestrich (-) oder einem Schrägstrich (/) beginnt, fügen Sie kein Leerzeichen zwischen -t
und dem field_term Wert ein.
-T
Gibt an, dass das Hilfsprogramm bcp die Verbindung mit SQL Server mithilfe integrierter Sicherheit über eine vertrauenswürdige Verbindung herstellt. Die Anmeldeinformationen des Netzwerkbenutzers ( Anmelde-IDund Kennwort ) sind nicht erforderlich. Wenn -T nicht angegeben wird, müssen Sie -U und -P angeben, um sich erfolgreich anzumelden.
-U login_id
Gibt die Anmelde-ID an, die zum Herstellen einer Verbindung mit SQL Serververwendet wird.
Wichtig
Wenn das Hilfsprogramm bcp die Verbindung mit SQL Server mithilfe integrierter Sicherheit über eine vertrauenswürdige Verbindung herstellt, verwenden Sie die Option -T (vertrauenswürdige Verbindung) anstelle der Kombination aus Benutzername und Kennwort .
-v
Meldet die Versionsnummer und Copyrightinformationen des bcp -Hilfsprogramms.
-V (80 | 90 | 100| 110)
Führt den Massenkopiervorgang mithilfe von Datentypen aus einer früheren Version von SQL Serveraus. Diese Option fordert nicht für jedes Feld zu einer Eingabe auf. Es werden die Standardwerte verwendet.
80 = SQL Server 2000
90 = SQL Server 2005
100 = SQL Server 2008 und SQL Server 2008 R2
110 = SQL Server 2012
Um beispielsweise Daten für Typen zu generieren, die von SQL Server 2000 nicht unterstützt werden, aber in späteren Versionen von SQL Server eingeführt wurden, verwenden Sie die Option -V80.
Weitere Informationen finden Sie unter Importieren von Daten aus früheren SQL Server-Versionen im nativen Format oder im Zeichenformat.
-w
Führt den Massenkopiervorgang mithilfe von Unicode-Zeichen aus. Diese Option fordert nicht für jedes Feld auf; es wird nchar
als Speichertyp, keine Präfixe, \t (Tabstoppzeichen) als Feldtrennzeichen und \n (Zeilenumbruchzeichen) als Zeilenbeschriftung verwendet. -w
ist nicht kompatibel mit -c
.
Weitere Informationen finden Sie unter Verwenden des Unicode-Zeichenformats zum Importieren und Exportieren von Daten (SQL Server).
-x
Bei Verwendung mit den Optionen format und -fFormatdatei wird anstelle der standardmäßigen, nicht auf XML basierenden Formatdatei eine XML-basierte Formatdatei generiert. Beim Importieren oder Exportieren von Daten hat -x keine Funktion. Wird die Option weder mit format noch mit -fFormatdateiverwendet, wird ein Fehler generiert.
Hinweise
Der bcp 12.0-Client wird installiert, wenn Sie MicrosoftSQL Server 2014-Tools installieren. Wenn Tools sowohl für SQL Server 2014 als auch für eine frühere Version von SQL Server installiert sind, abhängig vom Wert der PATH-Umgebungsvariable, verwenden Sie möglicherweise den früheren bcp-Client anstelle des bcp 12.0-Clients. Diese Umgebungsvariable definiert die Verzeichnisse, in denen von Windows nach ausführbaren Dateien gesucht wird. Führen Sie an der Windows-Befehlszeile den Befehl bcp /v aus, um zu ermitteln, welche Version Sie verwenden. Informationen zum Festlegen des Befehlspfads in der PATH-Umgebungsvariablen finden Sie in der Windows-Hilfe.
XML-Formatdateien werden nur unterstützt, wenn die SQL Server -Tools zusammen mit SQL Server Native Client installiert werden.
Informationen zum Speicherort und zum Verwenden des Hilfsprogramms bcp sowie zu den für Eingabeaufforderungs-Hilfsprogramme geltenden Syntaxkonventionen finden Sie unter Referenz zum Eingabeaufforderungs-Hilfsprogramm (Datenbank-Engine).
Informationen zum Vorbereiten von Daten für Massenimport- oder Massenexportvorgänge finden Sie unter Vorbereiten von Daten für den Massenexport oder -import (SQL Server).
Informationen dazu, wann Zeileneinfügevorgänge, die durch den Massenimport ausgeführt werden, im Transaktionsprotokoll protokolliert werden, finden Sie unter Voraussetzungen für die minimale Protokollierung beim Massenimport.
Systemeigene Datendateiunterstützung
In SQL Server 2014 unterstützt das bcp-Hilfsprogramm systemeigene Datendateien, die mit SQL Server 2000, SQL Server 2005, SQL Server 2008, SQL Server 2008 R2 und SQL Server 2012 kompatibel sind.
Berechnete Spalten und Zeitstempel-Spalten
Werte in der Datendatei, die für berechnete Oder timestamp
Spalten importiert werden, werden ignoriert, und SQL Server weist automatisch Werte zu. Wenn die Datendatei keine Werte für die berechneten Oder timestamp
Spalten in der Tabelle enthält, verwenden Sie eine Formatdatei, um anzugeben, dass die berechneten Oder timestamp
Spalten in der Tabelle beim Importieren von Daten übersprungen werden sollen; SQL Server weist automatisch Werte für die Spalte zu.
Berechnet und timestamp
Spalten werden wie gewohnt aus SQL Server in eine Datendatei kopiert.
Angeben von Bezeichnern mit Leerzeichen oder Anführungszeichen
SQL Server -Bezeichner können Zeichen wie z.B. eingebettete Leerzeichen und Anführungszeichen enthalten. Diese Bezeichner müssen folgendermaßen behandelt werden:
Wenn Sie an der Eingabeaufforderung einen Bezeichner oder Dateinamen angeben, der ein Leerzeichen oder ein Anführungszeichen enthält, müssen Sie den Bezeichner in Anführungszeichen ("") einschließen.
Mit dem Befehl
bcp out
wird beispielsweise die DatendateiCurrency Types.dat
erstellt:bcp AdventureWorks2012.Sales.Currency out "Currency Types.dat" -T -c
Sie müssen die Option
-q
verwenden, um einen Datenbanknamen anzugeben, der ein Leerzeichen oder Anführungszeichen enthält.Bei Besitzer-, Tabellen- oder Sichtnamen, die eingebettete Leerzeichen oder Anführungszeichen enthalten, ist Folgendes möglich:
Angeben der Option
-q
.Einschließen des Besitzer-, Tabellen- oder Sichtnamens in eckige Klammern ([]) innerhalb der Anführungszeichen.
Datenüberprüfung
bcp erzwingt nun Datenüberprüfungen, die dazu führen können, dass Skripts einen Fehler erzeugen, wenn sie für ungültige Daten in einer Datendatei ausgeführt werden. So wird durch bcp jetzt Folgendes überprüft:
Die systemeigene Darstellung der Datentypen
float
oderreal
ist gültig.Unicode-Daten besitzen eine gerade Bytelänge.
Formulare mit ungültigen Daten, die in früheren Versionen von SQL Server noch massenimportiert werden konnten, werden nun möglicherweise nicht mehr geladen. In früheren Versionen trat der Fehler erst auf, wenn ein Client versuchte, auf die ungültigen Daten zuzugreifen. Durch die zusätzliche Überprüfung werden überraschende Ergebnisse beim Abfragen der Daten nach dem Massenladen minimiert.
Massenexportieren und -importieren 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 gesendet bzw. in der durch die Sortierung implizierten Codeseite. Der Effekt ist derselbe, als wenn der Schalter -c ohne eine Formatdatei angegeben wird. |
SQLNCHAR oder SQLNVARCHAR | Die Daten werden im Unicode-Format gesendet. Der Effekt ist derselbe, als wenn der Schalter -w ohne eine Formatdatei angegeben wird. |
SQLBINARY oder SQLVARYBIN | Die Daten werden ohne Konvertierung gesendet. |
Berechtigungen
Ein bcpout-Vorgang erfordert SELECT-Berechtigungen für die Quelltabelle.
Ein bcpin-Vorgang erfordert mindestens SELECT/INSERT-Berechtigungen für die Zieltabelle. Darüber hinaus sind ALTER TABLE-Berechtigungen erforderlich, wenn eine der folgenden Bedingungen zutrifft:
Es sind Einschränkungen vorhanden, und der CHECK_CONSTRAINTS-Hinweis wurde nicht angegeben.
Hinweis
Die Deaktivierung von Einschränkungen wurde als Standardverhalten festgelegt. Verwenden Sie die Option -h mit dem CHECK_CONSTRAINTS-Hinweis, wenn Einschränkungen explizit aktiviert werden sollen.
Es sind Trigger vorhanden, und der FIRE_TRIGGER-Hinweis wurde nicht angegeben.
Hinweis
Standardmäßig werden Trigger nicht ausgelöst. Verwenden Sie die Option -h mit dem FIRE_TRIGGERS-Hinweis, wenn Trigger explizit ausgelöst werden sollen.
Mithilfe der Option -E importieren Sie Identitätswerte aus einer Datendatei.
Hinweis
Das Anfordern der ALTER TABLE-Berechtigung für die Zieltabelle war neu in SQL Server 2005. Diese neue Anforderung kann dazu führen, dass bcp -Skripts, die keine Trigger und Einschränkungsüberprüfungen erzwingen, einen Fehler erzeugen, wenn das Benutzerkonto nicht über ALTER TABLE-Berechtigungen für die Zieltabelle verfügt.
Zeichenmodus (-c)- und einheitlicher Modus (-n) – Bewährte Methoden
Dieser Abschnitt beinhaltet Empfehlungen für den Zeichenmodus (-c) und den einheitlichen Modus (-n).
(Administrator/Benutzer) Wenn möglich, verwenden Sie das einheitliche Format (-n), um das Trennzeichenproblem zu vermeiden. Verwenden Sie das einheitliche Format für Export- und Importvorgänge mit SQL Server. Exportieren Sie Daten aus SQL Server mit der -c- oder -w-Option, wenn die Daten in eine Nicht-SQL Server -Datenbank importiert werden.
(Administrator) überprüfen Sie Daten, wenn Sie BCP OUT verwenden. Wenn Sie z. B. BCP OUT, BCP IN und dann BCP OUT verwenden, überprüfen Sie, ob die Daten ordnungsgemäß exportiert werden, und ob die Abschlusszeichenwerte nicht als Teil eines Datenwerts verwendet werden. Erwägen Sie, die Standardabschlusszeichen (mithilfe von -t- und -r-Optionen) mit zufälligen Hexadezimalwerten zu überschreiben, um Konflikte zwischen Abschlusszeichenwerten und Datenwerten zu vermeiden.
(Benutzer) Verwenden Sie ein langes und eindeutiges Abschlusszeichen (eine Byte- oder Zeichensequenz), um die Wahrscheinlichkeit eines Konflikts mit dem tatsächlichen Zeichenfolgenwert zu minimieren. Verwenden Sie dazu die -t-Option und die -r-Option.
Beispiele
Dieser Abschnitt enthält folgende Beispiele:
A. Kopieren von Tabellenzeilen in eine Datendatei (mit einer vertrauenswürdigen Verbindung)
B. Kopieren von Tabellenzeilen in eine Datendatei (mit Authentifizierung im gemischten Modus)
C. Kopieren von Daten aus einer Datei in eine Tabelle
D: Kopieren einer bestimmten Spalte in eine Datendatei
E. Kopieren einer bestimmten Zeile in eine Datendatei
F. Kopieren von Daten aus einer Abfrage in eine Datendatei
G. Erstellen einer Nicht-XML-Formatdatei
H. Erstellen einer XML-Formatdatei
I. Verwenden einer Formatdatei für einen Massenimport mithilfe von bcp
A. Kopieren von Tabellenzeilen in eine Datendatei (mit einer vertrauenswürdigen Verbindung)
Im folgenden Beispiel wird die Verwendung der Option out in der AdventureWorks2012.Sales.Currency
-Tabelle veranschaulicht. In diesem Beispiel wird die Datendatei Currency.dat
erstellt, und die Tabellendaten werden mithilfe eines Zeichenformats in die Datendatei kopiert. Bei diesem Beispiel wird vorausgesetzt, dass Sie die Windows-Authentifizierung verwenden und über eine vertrauenswürdige Verbindung mit der Serverinstanz verfügen, auf der Sie den bcp-Befehl ausführen.
Geben Sie folgenden Befehl an der Eingabeaufforderung ein:
bcp AdventureWorks2012.Sales.Currency out Currency.dat -T -c
B. Kopieren von Tabellenzeilen in eine Datendatei (mit Authentifizierung im gemischten Modus)
Im folgenden Beispiel wird die Verwendung der Option out in der AdventureWorks2012.Sales.Currency
-Tabelle veranschaulicht. In diesem Beispiel wird die Datendatei Currency.dat
erstellt, und die Tabellendaten werden mithilfe eines Zeichenformats in die Datendatei kopiert.
Bei diesem Beispiel wird vorausgesetzt, dass Sie die Authentifizierung im gemischten Modus verwenden. Sie müssen daher den Schalter -U verwenden, um die Anmelde-ID anzugeben. Sofern Sie keine Verbindung mit der Standardinstanz von SQL Server auf dem lokalen Computer herstellen, müssen Sie außerdem mit dem Schalter -S den Systemnamen und optional einen Instanznamen angeben.
bcp AdventureWorks2012.Sales.Currency out Currency.dat -c -U<login_id> -S<server_name\instance_name>
Das System fordert Sie zur Eingabe des Kennworts auf.
C. Kopieren von Daten aus einer Datei in eine Tabelle
Im folgenden Beispiel wird die Verwendung der Option in mithilfe der Datei veranschaulicht, die im vorherigen Beispiel erstellt wurde (Currency.dat
). Zuerst wird in diesem Beispiel jedoch eine leere Kopie der AdventureWorks2012 Sales.Currency
-Tabelle (Sales.Currency2
) erstellt, in die die Daten kopiert werden. Bei diesem Beispiel wird vorausgesetzt, dass Sie die Windows-Authentifizierung verwenden und über eine vertrauenswürdige Verbindung mit der Serverinstanz verfügen, auf der Sie den bcp-Befehl ausführen.
Geben Sie den folgenden Befehl im Abfrage-Editor ein, um die leere Tabelle zu erstellen:
USE AdventureWorks2012;
GO
SELECT * INTO AdventureWorks2012.Sales.Currency2
FROM AdventureWorks2012.Sales.Currency WHERE 1=2;
Geben Sie den folgenden Befehl an der Eingabeaufforderung ein, um die Zeichendaten per Massenvorgang in die neue Tabelle zu kopieren (d. h. um die Daten zu importieren):
bcp AdventureWorks2012.Sales.Currency2 in Currency.dat -T -c
Zeigen Sie den Inhalt der Tabelle im Abfrage-Editor ein und geben Sie Folgendes ein, um zu überprüfen, ob der Befehl erfolgreich ausgeführt wurde:
USE AdventureWorks2012;
GO
SELECT * FROM Sales.Currency2
D: Kopieren einer bestimmten Spalte in eine Datendatei
Zum Kopieren einer bestimmten Spalte können Sie die Option queryout verwenden. Im folgenden Beispiel wird nur die Name
-Spalte der Sales.Currency
-Tabelle in eine Datendatei kopiert. Bei diesem Beispiel wird vorausgesetzt, dass Sie die Windows-Authentifizierung verwenden und über eine vertrauenswürdige Verbindung mit der Serverinstanz verfügen, auf der Sie den bcp-Befehl ausführen.
Geben Sie an der Eingabeaufforderung von Windows Folgendes ein:
bcp "SELECT Name FROM AdventureWorks.Sales.Currency" queryout Currency.Name.dat -T -c
E. Kopieren einer bestimmten Zeile in eine Datendatei
Zum Kopieren einer bestimmten Zeile können Sie die Option queryout verwenden. Im folgenden Beispiel wird nur die Zeile für den Kontakt mit dem Namen Jarrod Rana
aus der Tabelle AdventureWorks2012.Person.Person
in eine Datendatei (Jarrod Rana.dat
) kopiert. In dem Beispiel wird davon ausgegangen, dass Sie die Windows-Authentifizierung verwenden und dass eine vertrauenswürdige Verbindung zu der Serverinstanz besteht, auf der der bcp-Befehl ausgeführt wird.
Geben Sie an der Eingabeaufforderung von Windows Folgendes ein:
bcp "SELECT * FROM AdventureWorks2012.Person.Person WHERE FirstName='Jarrod' AND LastName='Rana' " queryout "Jarrod Rana.dat" -T -c
F. Kopieren von Daten aus einer Abfrage in eine Datendatei
Verwenden Sie die Option queryout zum Kopieren des Resultsets einer Transact-SQL-Anweisung in eine Datendatei. Im folgenden Beispiel werden die Namen aus der AdventureWorks2012.Person.Person
-Tabelle nach Nachnamen und dann nach Vornamen geordnet in die Datendatei Contacts.txt
kopiert. Bei diesem Beispiel wird vorausgesetzt, dass Sie die Windows-Authentifizierung verwenden und über eine vertrauenswürdige Verbindung mit der Serverinstanz verfügen, auf der Sie den bcp-Befehl ausführen.
Geben Sie an der Eingabeaufforderung von Windows Folgendes ein:
bcp "SELECT FirstName, LastName FROM AdventureWorks2012.Person.Person ORDER BY LastName, Firstname" queryout Contacts.txt -c -T
G. Erstellen einer Nicht-XML-Formatdatei
Im folgenden Beispiel wird eine Nicht-XML-Formatdatei Currency.fmt
für die Tabelle in der Sales.Currency
AdventureWorks2012-Datenbank erstellt. Bei diesem Beispiel wird vorausgesetzt, dass Sie die Windows-Authentifizierung verwenden und über eine vertrauenswürdige Verbindung mit der Serverinstanz verfügen, auf der Sie den bcp-Befehl ausführen.
Geben Sie an der Eingabeaufforderung von Windows Folgendes ein:
bcp AdventureWorks2012.Sales.Currency format nul -T -c -f Currency.fmt
Weitere Informationen finden Sie unter Nicht-XML-Formatdateien (SQL Server).
H. Erstellen einer XML-Formatdatei
Im folgenden Beispiel wird eine XML-Formatdatei erstellt, die für die Sales.Currency
Tabelle in der AdventureWorks2012-Datenbank benannt Currency.xml
ist. Bei diesem Beispiel wird vorausgesetzt, dass Sie die Windows-Authentifizierung verwenden und über eine vertrauenswürdige Verbindung mit der Serverinstanz verfügen, auf der Sie den bcp-Befehl ausführen.
Geben Sie an der Eingabeaufforderung von Windows Folgendes ein:
bcp AdventureWorks2012.Sales.Currency format nul -T -c -x -f Currency.xml
Hinweis
Um die Option -x zu verwenden, müssen Sie über einen bcp 9.0-Client verfügen. Informationen zum Verwenden des bcp 9.0-Clients finden Sie unter „Hinweise“.
Weitere Informationen finden Sie unter XML-Formatdateien (SQL Server).
I. Verwenden einer Formatdatei für einen Massenimport mithilfe von bcp
Wenn Sie eine zuvor erstellte Formatdatei zum Importieren von Daten in eine SQL Server-Instanz verwenden möchten, müssen Sie den Schalter -f mit der Option in verwenden. So wird beispielsweise durch den folgenden Befehl der Inhalt der Datendatei Currency.dat
in eine Kopie der Sales.Currency
-Tabelle (Sales.Currency2
) massenkopiert, wobei die zuvor erstellte Formatdatei Currency.xml
verwendet wird. Bei diesem Beispiel wird vorausgesetzt, dass Sie die Windows-Authentifizierung verwenden und über eine vertrauenswürdige Verbindung mit der Serverinstanz verfügen, auf der Sie den bcp-Befehl ausführen.
Geben Sie an der Eingabeaufforderung von Windows Folgendes ein:
bcp AdventureWorks2012.Sales.Currency2 in Currency.dat -T -f Currency.xml
Hinweis
Formatdateien erweisen sich besonders dann als nützlich, wenn die Felder in der Datendatei z. B. hinsichtlich Anzahl, Reihenfolge oder Datentypen von den Tabellenspalten abweichen. Weitere Informationen finden Sie unter Formatdateien zum Importieren oder Exportieren von Daten (SQL Server).
Zusätzliche Beispiele
Die folgenden Themen enthalten Beispiele zur Verwendung von bcp:
Beispiele für den Massenimport und -export von XML-Dokumenten (SQL Server)
Beibehalten von Identitätswerten beim Massenimport von Daten (SQL Server)
Beibehalten von NULL-Werten oder Verwenden von Standardwerten während des Massenimports (SQL Server)
Massenimport von Daten mithilfe einer Formatdatei (SQL Server)
Verwenden des Zeichenformats zum Importieren oder Exportieren von Daten (SQL Server)
Verwenden des nativen Formats zum Importieren oder Exportieren von Daten (SQL Server)
Verwenden des Unicode-Zeichenformats zum Importieren und Exportieren von Daten (SQL Server)
Verwenden des systemeigenen Unicode-Formats zum Importieren oder Exportieren von Daten (SQL Server)
Weitere Informationen
Vorbereiten von Daten für den Massenexport oder -import (SQL Server)
BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL)
SET QUOTED_IDENTIFIER (Transact-SQL)
sp_configure (Transact-SQL)
sp_tableoption (Transact-SQL)
Formatdateien zum Importieren oder Exportieren von Daten (SQL Server)