Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL-Datenbank in Microsoft Fabric
Das Massenkopieprogrammprogramm (bcp) kopiert Daten zwischen einer Instanz von SQL Server und einer Datendatei in einem vom Benutzer angegebenen Format.
Verwenden Sie das bcp-Hilfsprogramm , um große Mengen neuer Zeilen in SQL Server-Tabellen zu importieren oder 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 Datentypen verstehen, die für ihre Spalten gültig sind.
Weitere Informationen dazu, welche Version von bcp auf Ihrem System, den Systemanforderungen und dem Abrufen von bcp installiert ist, finden Sie unter Herunterladen und Installieren des bcp-Hilfsprogramms.
Hinweis
bcp-Datendateien enthalten keine Schema- oder Formatinformationen. Wenn Sie bcp zum Sichern von Daten verwenden und dann später die Quelltabelle ablegen oder ändern, benötigen Sie entweder eine identische Tabellendefinition oder eine Formatdatei, um die Daten wieder zu importieren.
Die Syntaxkonventionen, die für die bcp-Syntax verwendet werden, finden Sie unter Transact-SQL Syntaxkonventionen (Transact-SQL).
So verwenden Sie bcp
Informationen zur Verwendung von bcp, einschließlich Beispielbefehlen, finden Sie unter Verwendung des bcp-Hilfsprogramms.
Verwenden von bcp unter Linux und macOS
Informationen zum Installieren der Befehlszeilentools unter macOS und Linux finden Sie unter Installieren der Befehlszeilentools sqlcmd und bcp SQL Server unter Linux.
Überlegungen zu bcp unter Linux und macOS
Das Feldabschlusszeichen ist ein Tabulator (
\t).Das Zeilenabschlusszeichen ist ein Zeilenvorschub (
\n).Verwenden Sie für SQL Server-zu SQL Server-Übertragungen das systemeigene Format (
-n). Verwenden Sie das Zeichenformat (-c) nur, wenn die Daten in ein Nicht-SQL Server-System übertragen werden oder wenn die Datei keine erweiterten Zeichen enthalten soll. Weitere Informationen finden Sie unter Bewährte Methoden für den Zeichenmodus und den nativen Modus.Sie müssen einen umgekehrten Schrägstrich (
\) in einem Befehlszeilenargument maskieren oder escapen. Wenn Sie beispielsweise eine Neueinbruchlinie als benutzerdefinierter Zeilenendpunkt angeben möchten, verwenden Sie einen der folgenden Mechanismen:-r\\n-r"\n"-r'\n'
TDS 8.0-Unterstützung
SQL Server 2025 (17.x) führt die TDS 8.0-Unterstützung für das bcp-Hilfsprogramm ein.
Syntax
bcp [ database_name. ] schema. { table_name | view_name | "query" }
{ in data_file | out data_file | queryout data_file | format nul }
[ -a packet_size ]
[ -b batch_size ]
[ -c ]
[ -C { ACP | OEM | RAW | code_page } ]
[ -d database_name ]
[ -D ]
[ -e err_file ]
[ -E ]
[ -f format_file ]
[ -F first_row ]
[ -G Microsoft Entra authentication ]
[ -h"hint [ , ...n ] " ]
[ -i input_file ]
[ -k ]
[ -K application_intent ]
[ -l login_timeout ]
[ -L last_row ]
[ -m max_errors ]
[ -n ]
[ -N ]
[ -o output_file ]
[ -P password ]
[ -q ]
[ -r row_term ]
[ -R ]
[ -S [ server_name [ \instance_name ] ] ]
[ -t field_term ]
[ -T ]
[ -U login_id ]
[ -u ]
[ -v ]
[ -V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170) ]
[ -w ]
[ -x ]
[ -Y [ s | m | o ] ]
[ -z ]
Befehlszeilenoptionen
In der folgenden Tabelle sind die Befehlszeilenoptionen aufgeführt, die in bcp verfügbar sind und welche Betriebssysteme unterstützt werden.
1 Erfordert bcp Version 18 oder höher, die im Lieferumfang von SQL Server 2025 (17.x) enthalten ist.
2 ODBC 18.6.1.1 und höhere Versionen.
Objekt- und Übertragungsmodus
database_name
Der Name der Datenbank, die die angegebene Tabelle oder Ansicht enthält. Wenn Sie diesen Parameter nicht angeben, wird die Standarddatenbank für den Benutzer verwendet.
Sie können den Datenbanknamen mit -d auch explizit angeben.
schema
Der Name des Besitzers der Tabelle oder Ansicht. schema ist optional, wenn der Benutzer, der den Vorgang ausführt, der Besitzer der angegebenen Tabelle oder Sicht ist. Wenn Sie kein Schema angeben 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.
table_name
Der Name der Zieltabelle, wenn Daten in SQL Server importiert werden (in), oder 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 Quellsicht, wenn Daten aus SQL Server kopiert werden (out). Bei Verwendung als Ziel (in) wird eine Ansicht nur unterstützt, wenn alle Spalten auf dieselbe Tabelle verweisen. Diese Einschränkung gilt nicht, wenn die Ansicht als Quelle (out) verwendet wird. Weitere Informationen zu den Einschränkungen beim Kopieren von Daten in Ansichten finden Sie unter INSERT.
"query"
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. Sie müssen auch angeben queryout , wann Daten in massenweise aus einer Abfrage kopiert werden.
Die Abfrage kann auf eine gespeicherte Prozedur verweisen, sofern alle Tabellen, auf die innerhalb der gespeicherten Prozedur verwiesen wird, 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.
in
Kopiert Daten aus einer Datei in die Datenbanktabelle oder -ansicht. Gibt die Richtung des Massenkopierens an.
Ausgang
Kopiert Daten aus der Datenbanktabelle oder -ansicht in eine Datei. Gibt die Richtung des Massenkopierens an.
Wenn Sie eine vorhandene Datei angeben, wird die Datei überschrieben. Wenn das bcp-Hilfsprogramm Daten extrahiert, stellt es eine leere Zeichenfolge als Null und eine NULL-Zeichenfolge als leere Zeichenfolge dar.
data_file
Der vollständige Pfad der Datendatei. Wenn Sie Daten in SQL Server massenimportieren, enthält die Datendatei die Daten, die in die angegebene Tabelle oder Ansicht kopiert werden sollen. Wenn Sie Daten aus SQL Server massenexportiert haben, enthält die Datendatei die aus der Tabelle oder Ansicht kopierten Daten. Der Pfad kann 1 bis 255 Zeichen enthalten. Die Datendatei kann maximal 2^63-1 Zeilen enthalten.
queryout
Kopiert Daten aus einer Abfrage und muss nur angegeben werden, wenn Daten aus einer Abfrage in massenweise kopiert werden.
format
Erstellt eine Formatdatei basierend auf der angegebenen Option (-n, -c, -w oder -N) und den Tabellen- oder Sichttrennzeichen. Beim Massenkopieren von Daten kann der Befehl bcp auf eine Formatdatei verweisen. Dies erspart Ihnen die wiederholte interaktive Eingabe von Formatinformationen. Die format Option erfordert die -f Option. Das Erstellen einer XML-Formatdatei erfordert auch die -x Option. Weitere Informationen finden Sie unter Erstellen einer Formatdatei mit bcp (SQL Server). Sie müssen nul als Wert angeben (format nul).
-q
Führt die SET QUOTED_IDENTIFIER ON Anweisung in der Verbindung zwischen dem bcp-Hilfsprogramm und einer Instanz von SQL Server 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 im Abschnitt "Hinweise " in diesem Artikel.
Verbindung und Authentifizierung
-S [server_name[\instance_name]]
Gibt den Namen der SQL Server-Instanz an, mit der eine Verbindung hergestellt werden soll, oder wenn Sie einen DSN verwenden -D.
Wenn Sie keinen Server angeben, stellt das bcp-Hilfsprogramm eine Verbindung mit der Standardinstanz von SQL Server auf dem lokalen Computer her. Sie benötigen diese Option, wenn Sie einen bcp-Befehl von einem Remotecomputer im Netzwerk oder einer lokalen benannten Instanz ausführen. Um eine Verbindung mit der Standardinstanz von SQL Server auf einem Server herzustellen, geben Sie lediglich Servernamean. Um eine Verbindung mit einer benannten Instanz von SQL Server herzustellen, geben Sie <server_name>\<instance_name> an.
-d database_name
Gibt die Datenbank an, mit der eine Verbindung hergestellt werden soll. Standardmäßig stellt bcp eine Verbindung mit Ihrer Standarddatenbank her. Wenn Sie angeben -d <database_name> und einen dreiteiligen Namen (database_name.schema.table, der als erster Parameter an bcp übergeben wird), tritt ein Fehler auf, da Sie den Datenbanknamen nicht zweimal angeben können. Wenn database_name mit einem Bindestrich (-) oder Schrägstrich (/) beginnt, fügen zwischen -d und dem Datenbanknamen kein Leerzeichen hinzu.
-U login_id
Gibt die Anmelde-ID an, die zum Herstellen einer Verbindung mit SQL Serververwendet wird.
- P-Kennwort
Gibt das Kennwort für die Anmelde-ID an. Wenn Sie diese Option nicht verwenden, wird der bcp-Befehl zur Eingabe eines Kennworts auffordern. Wenn Sie diese Option am Ende der Eingabeaufforderung ohne Kennwort verwenden, verwendet bcp das Standardkennwort (NULL).
Important
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 verwenden. Drücken Sie stattdessen nach dem Angeben von bcp zusammen mit der -U Option und anderen Schaltern (-P nicht angeben) die Eingabetaste, und die Eingabeaufforderung fordert Sie auf, ein Kennwort einzugeben. Durch diese Methode wird sichergestellt, dass das Kennwort bei der Eingabe maskiert wird.
Wenn password mit einem Bindestrich (-) oder Schrägstrich (/) beginnt, fügen zwischen -P und dem Wert password kein Leerzeichen hinzu.
Unter Linux und macOS wird bei Verwendung mit der -G-Option ohne -U eine -P-Datei angegeben, die ein Microsoft Entra-Zugriffstoken (v17.8 und höhere Versionen) enthält. Die Tokendatei sollte im UTF-16LE-Format (ohne BOM) vorliegen. Weitere Informationen finden Sie unter Authenticate with Microsoft Entra ID in bcp.
-G
Gilt für: Azure SQL-Datenbank, Azure SQL Managed Instance, SQL-Datenbank in Microsoft Fabric, Azure Synapse Analytics und SQL Server 2022 (16.x) und höhere Versionen.
Diese Option wird vom Client verwendet, um anzugeben, dass der Benutzer mit microsoft Entra-ID authentifiziert wird. Für den -G Switch ist bcp Version 14.0.3008.27 oder höher erforderlich. Um die Version zu bestimmen, führen Sie bcp -vaus. Weitere Informationen finden Sie unter Verwenden der Microsoft Entra-Authentifizierung mit SQL-Datenbank oder Azure Synapse Analytics oder Authentifizierung in der SQL-Datenbank in Microsoft Fabric.
Ausführliche Informationen zur Microsoft Entra-Authentifizierung in bcp finden Sie unter Authenticate with Microsoft Entra ID in bcp.
-D
Bewirkt, dass der Wert, der an die bcp -S-Option übergeben wird, als Datenquellenname (Data Source Name, DSN) interpretiert wird.
-D kann an einer beliebigen Stelle in der Befehlszeile angezeigt werden; Die Reihenfolge relativ zu -S den spielt keine Rolle.
Ein DSN kann verwendet werden, um:
- Einbetten von Treiberoptionen zur Vereinfachung von Befehlszeilen
- Erzwingen Sie Treiberoptionen, auf die nicht anderweitig über die Befehlszeile zugegriffen werden kann, wie z.B.
MultiSubnetFailover. - Schützen Sie sensible Anmeldeinformationen davor, als Befehlszeilenargumente entdeckt zu werden.
Weitere Informationen finden Sie unter DSN-Unterstützung in sqlcmd und bcp.
-K application_intent
Deklariert den Arbeitsauslastungstyp der Anwendung beim Herstellen einer Verbindung mit einem Server. Der einzig mögliche Wert ist ReadOnly. Wenn Sie -K nicht angeben, unterstützt das bcp-Hilfsprogramm keine Konnektivität zu einem sekundären Replikat in einer Always On-Verfügbarkeitsgruppe. Weitere Informationen finden Sie unter Auslagern von schreibgeschützten Workloads auf ein sekundäres Replikat einer Always On-Verfügbarkeitsgruppe.
-l login_timeout
Gibt einen Anmeldungstimeout an. Die Option -l gibt an, wie viele Sekunden verstreichen dürfen, bevor ein Timeout bei der Anmeldung bei SQL Server eintritt, wenn versucht wird, eine Verbindung zu einem Server herzustellen. Das Standardanmeldetimeout beträgt 15 Sekunden. Der Anmelde-Timeout muss eine Zahl zwischen 0 und 65534 sein. Wenn der von Ihnen angegeben Wert nicht numerisch ist oder nicht in diesen Bereich fällt, generiert bcp eine Fehlermeldung. Der Wert 0 gibt ein unendliches Timeout an.
-T
Gibt an, dass das Hilfsprogramm bcp die Verbindung mit SQL Server mithilfe integrierter Sicherheit über eine vertrauenswürdige Verbindung herstellt. Die Sicherheitsanmeldeinformationen des Netzwerkbenutzers (login_id und password) sind nicht erforderlich. Wenn Sie -T nicht angeben, müssen Sie -U und -P angeben, um erfolgreich eine Verbindung herzustellen.
Important
Verwenden Sie -T nur, wenn Sie eine Verbindung mit SQL Server über eine in Windows integrierte vertrauenswürdige Verbindung herstellen. Beim Herstellen einer Verbindung mit der Azure SQL-Datenbank oder Azure Synapse Analytics -T, wird integrierte Windows-Authentifizierung nicht unterstützt. Verwenden Sie -G für die Microsoft Entra-Authentifizierung für Azure-Dienste oder SQL Server 2022 (16.x) und höhere Versionen (siehe Authentifizieren mit Microsoft Entra ID in bcp).
-Y[s|m|o]
Gilt für: bcp Version 18 und höher, die im Lieferumfang von SQL Server 2025 (17.x) enthalten ist.
Gibt an, ob Verbindungen die TLS-Verschlüsselung über das Netzwerk verwenden.
-Y kann o sein (für Optional), m (für Mandatory, der Standardwert), oder s (für Strict). Wenn Sie nicht einschließen -Y, -Ym ist (für Mandatory) die Standardeinstellung.
-u
Gilt für: bcp Version 18 und höher, die im Lieferumfang von SQL Server 2025 (17.x) enthalten ist.
Vertrauen Sie dem Server-Zertifikat Bei Verwendung mit der Verschlüsselungsoption für die Verbindung wird die Verschlüsselung durch ein selbstsigniertes Serverzertifikat aktiviert.
Datendarstellung
-c
Führt den Vorgang mithilfe eines Zeichendatentyps aus. Diese Option fordert nicht dazu auf, jedes Feld auszufüllen. Es verwendet Zeichen als Speichertyp ohne Präfixe und nutzt \t (Tabulatorzeichen) als Feldtrennzeichen sowie \r\n (neues Zeilenzeichen) als Zeilenende.
-c ist nicht kompatibel mit -w.
Weitere Informationen finden Sie unter Verwenden des Zeichenformats zum Importieren oder Exportieren von Daten (SQL Server).
Bewährte Methoden finden Sie unter " Zeichenmodus" und bewährte Methoden für den nativen Modus.
-C { ACP | OEM | RAW | code_page }
Gilt nur für: Nur Windows. Wird unter Linux und macOS nicht unterstützt.
Gibt die Codepage für die in der Datendatei enthaltenen Daten an. Codepage ist nur dann von Bedeutung, wenn die Daten char-, varchar- oder text -Spalten mit Zeichenwerten enthalten, die größer als 127 oder kleiner als 32 sind.
Geben Sie einen Sortiernamen für jede Spalte in einer Formatdatei an, außer wenn die Option 65001 vorrang vor der Sortierungs- oder Codeseitenspezifikation haben soll.
| Codepagewert | Description |
|---|---|
ACP |
ANSI/Microsoft Windows (ISO 1252). |
OEM |
Standardcodepage, die vom Client verwendet wird. Diese Codeseite ist die Standardeinstellung, wenn Sie nicht angeben -C. |
RAW |
Es erfolgt keine Konvertierung von einer Codepage zu einer anderen. Diese Option ist am schnellsten, da keine Konvertierung erfolgt. |
<code_page> |
Bestimmte Codeseitenzahl, z. B. 850. Versionen vor SQL Server 2016 (13.x) unterstützen keine Codepage 65001 (UTF-8-Codierung). Ab Version 13 kann die UTF-8-Codierung in frühere Versionen von SQL Serverimportiert werden. |
-n
Führt das Massenkopieren mithilfe der systemeigenen (Datenbank-)Datentypen der Daten aus. Diese Option fordert nicht zur Eingabe für jedes Feld auf. Es verwendet die systemeigenen Werte.
Weitere Informationen finden Sie unter Verwenden des nativen Formats zum Importieren oder Exportieren von Daten (SQL Server).
Bewährte Methoden finden Sie unter " Zeichenmodus" und bewährte Methoden für den nativen Modus.
-N
Gilt nur für: Nur Windows. Wird unter Linux und macOS nicht unterstützt.
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. Es wird nicht für jedes Feld eine Eingabeaufforderung angezeigt. 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 unter Verwendung von BCP exportieren -N und dann importieren und dabei eine Spalte mit Nicht-Unicode-Zeichen fester Länge vorliegt (z. B. char(10)), wird möglicherweise eine Warnung über abgeschnittene Daten angezeigt.
Sie können die Warnung ignorieren. Eine Möglichkeit zum Auflösen dieser Warnung besteht darin, -n anstelle von -N zu verwenden.
-w
Führt den Massenkopievorgang mithilfe von Unicode-Zeichen aus. Diese Option fragt nicht bei jedem Feld nach. Es verwendet nchar als Speichertyp, keine Präfixe, \t (Tabulatorzeichen) als Feldtrennzeichen und \n (Zeilenendzeichen) als Zeilenterminator.
-w ist nicht kompatibel mit -c.
Weitere Informationen finden Sie unter Verwenden des Unicode-Zeichenformats zum Importieren oder Exportieren von Daten (SQL Server).
-z
Gilt nur für: bcp (ODBC), Linux und macOS. Windows wird nicht unterstützt.
Die Unterstützung für den Vektordatentyp wird im bcp-Hilfsprogramm aktiviert. Dieses Feature ist derzeit standardmäßig deaktiviert. Wenn deaktiviert, werden Vektordaten als JSON-Float-Arrayzeichenfolgen importiert oder exportiert. Wenn diese Option aktiviert ist und die Verbindung mit SQL Server 2025 (17.x) und höheren Versionen hergestellt wird, werden Vektordaten im nativen Vektor-Binärformat importiert oder exportiert.
Formatdateien
-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:
Wenn Sie
-fmit derformatOption verwenden, wird die angegebene format_file für die angegebene Tabelle oder Ansicht erstellt. Zum Erstellen einer XML-Formatdatei müssen Sie zudem die Option-xangeben. Weitere Informationen finden Sie unter Erstellen einer Formatdatei mit bcp (SQL Server).Wenn Sie
-fmit der Optioninoderoutverwenden, ist eine vorhandene Formatdatei erforderlich.Hinweis
Die Verwendung einer Formatdatei mit der
in- oderout-Option ist optional. Wenn Sie die-f-Option nicht angeben und auch-n,-c,-woder-Nnicht spezifizieren, fordert der Befehl Sie zur Eingabe von Formatinformationen auf und ermöglicht es Ihnen, Ihre Antworten in einer Formatdatei zu speichern. Der Standarddateiname lautetbcp.fmt.
Wenn format_file mit einem Bindestrich (-) oder Schrägstrich (/) beginnt, fügen Sie zwischen -f und dem Wert von format_file kein Leerzeichen hinzu.
-x
Gilt nur für: Nur Windows. Wird unter Linux und macOS nicht unterstützt.
Verwenden Sie diese Option mit den format und -fformat_file Optionen. Sie generiert eine XML-basierte Formatdatei anstelle der standardmäßigen Nicht-XML-Formatdatei. Die -x Option funktioniert beim Importieren oder Exportieren von Daten nicht. Bei Verwendung ohne format und -fformat_file wird ein Fehler generiert.
Batchverarbeitung und Leistung
-a packet_size
Gibt die Anzahl der Bytes pro Netzwerkpaket an, die der Client an den Server sendet und empfängt. Legen Sie diese Serverkonfigurationsoption mithilfe von SQL Server Management Studio oder der gespeicherten sp_configure Systemprozedur fest. Sie können die Serverkonfigurationsoption jedoch einzeln überschreiben, indem Sie diese Option verwenden.
packet_size können zwischen 4.096 Byte und 65.535 Bytes betragen. Der Standardwert lautet 4096.
Das Erhöhen der Paketgröße kann die Leistung von Massenkopievorgängen verbessern. Wenn Sie ein größeres Paket anfordern, aber der Server es nicht gewähren kann, wird der Standardwert verwendet. Die vom bcp-Hilfsprogramm generierten Leistungsstatistiken zeigen 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 importiert bcp alle Zeilen in der Datendatei als einen Batch. 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 fehlschlägt, wird nur für die Einfügungen aus dem aktuellen Batch ein Rollback ausgeführt. Batches, die von zugesicherten Transaktionen bereits importiert wurden, sind von einem späteren Fehler nicht betroffen.
Der -b und der -h "ROWS_PER_BATCH=<bb>" Hinweis schließen sich gegenseitig aus. Verwenden Sie -b, wenn bcp die Batchverarbeitung explizit steuern soll, oder ROWS_PER_BATCH, um dem Server-Optimizer einen Hinweis zu geben, wenn die Daten als eine einzelne Transaktion gesendet werden sollen.
-h "Hinweise [, ... n]"
Gilt nur für: Nur Windows. Wird unter Linux und macOS nicht unterstützt.
Gibt die Hinweise an, die während eines Massenimports von Daten in eine Tabelle oder Ansicht genutzt werden sollen.
ORDER (Spalte [ASC | DESC] [, ... n])
Die Sortierreihenfolge der Daten in der Datendatei. Die Leistung beim Massenimport verbessert sich, wenn die importierten Daten nach dem gruppierten Index in der Tabelle sortiert werden, falls vorhanden. Wenn die Datendatei in einer anderen Reihenfolge sortiert ist, d. h. anders als die Reihenfolge eines gruppierten Indexschlüssels oder wenn in der Tabelle kein gruppierter Index vorhanden ist, wird die
ORDERKlausel ignoriert. Die von Ihnen 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). Wird verwendet, wenn Sie nicht angeben
-b, was dazu führt, dass die gesamte Datendatei als einzelne Transaktion an den Server gesendet wird. Der Server optimiert das Massenladen entsprechend dem Wert bb. Standardmäßig istROWS_PER_BATCHunbekannt.KILOBYTES_PER_BATCH = cc
Die ungefähre Anzahl von Kilobytes (KB) an Daten pro Batch (als cc). Standardmäßig ist
KILOBYTES_PER_BATCHunbekannt.TABLOCK
Gibt an, dass eine Massenupdatesperre auf Tabellenebene während 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. Sie können eine Tabelle gleichzeitig von mehreren Clients laden, wenn die Tabelle keine Indizes enthält und
TABLOCKangegeben ist. Standardmäßig bestimmt die Tabellenoptiontable lock on bulkloaddas Sperrverhalten. Weitere Informationen finden Sie unter sp_tableoption.Hinweis
Wenn es sich bei der Zieltabelle um einen gruppierten Columnstore-Index handelt, ist der Hinweis
TABLOCKnicht erforderlich, wenn Daten von mehreren gleichzeitigen Clients geladen werden, da jedem gleichzeitigen Thread eine separate Zeilengruppe innerhalb des Indexes zugewiesen wird und Daten darin geladen werden. Weitere Informationen finden Sie unter Columnstore-Indizes: Übersicht.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_CONSTRAINTSHinweis werden alleCHECKEinschränkungenFOREIGN KEYignoriert, und nach dem Vorgang wird die Einschränkung für die Tabelle als nicht vertrauenswürdig markiert.Hinweis
UNIQUE,PRIMARY KEYundNOT NULLEinschränkungen werden immer durchgesetzt.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, können die Kosten für die Neuvalidierung der Einschränkung die Kosten für das Anwenden der Einschränkungen
CHECKauf die inkrementellen Daten überschreiten. Daher können Sie die Einschränkungsüberprüfung in der Regel während eines inkrementellen Massenimports aktivieren.Die Deaktivierung von Einschränkungen (das Standardverhalten) kann z. B. erwünscht sein, wenn die Eingabedaten Zeilen enthalten, die Einschränkungen verletzen. Durch Deaktivieren von
CHECKEinschränkungen können Sie die Daten importieren und dann Transact-SQL Anweisungen verwenden, um ungültige Daten zu entfernen.Hinweis
Der Schalter
-mmax_errors gilt nicht für die Einschränkungsüberprüfung.FIRE_TRIGGERS
Wenn Sie diese Option mit dem In-Argument angeben, werden alle in der Zieltabelle definierten Einfügetrigger während des Massenkopievorgangs ausgeführt. Wenn Sie nicht angeben
FIRE_TRIGGERS, werden keine Einfügetrigger ausgeführt.FIRE_TRIGGERSwird für die Argumenteout,queryoutundformatignoriert.
-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. Die max_errors Summe schließt alle Fehler aus, die der Server nur erkennen kann, z. B. Einschränkungsverletzungen.
Eine Zeile, die das bcp-Hilfsprogramm nicht kopieren kann, wird ignoriert und als ein Fehler gezählt. Wenn Sie diese Option nicht einschließen, ist der Standardwert 10.
Hinweis
Die -m Option gilt nicht beim Konvertieren der Datentypen "Money " oder "bigint ".
-F erste_zeile
Gibt die Nummer der ersten Zeile an, die aus einer Tabelle exportiert oder von einer Datendatei importiert werden soll. Für diesen Parameter ist ein Wert größer als (>) 0, aber kleiner als (<) oder gleich der Gesamtanzahl der Zeilen erforderlich. Wenn Sie diesen Parameter nicht angeben, ist der Standardwert die erste Zeile der Datei.
erste_Zeile kann eine positive ganze Zahl mit einem Wert bis zu 2^63-1 sein.
-F
first_row verwendet eine 1-basierte Nummerierung.
-L letzte_Zeile
Gibt die Nummer der letzten Zeile an, die aus einer Tabelle exportiert oder von einer Datendatei importiert werden soll. Für diesen Parameter ist ein Wert größer als (>) 0, aber kleiner als (<) oder gleich der Anzahl der letzten Zeile erforderlich. Wenn Sie diesen Parameter nicht angeben, ist die Standardzeile die letzte Zeile der Datei.
letzte_Zeile kann eine positive ganze Zahl mit einem Wert bis zu 2^63-1 sein.
-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 Zeilenterminatoren (SQL Server).
Wenn Sie das Zeilenabschlusszeichen in Hexadezimalschreibweise in einem bcp-Befehl angeben, wird der Wert bei 0x00 abgeschnitten. Wenn Sie beispielsweise 0x410041 angeben, wird 0x41 verwendet.
Wenn row_term mit einem Bindestrich (-) oder Schrägstrich (/) beginnt, fügen zwischen -r und dem Wert von row_term kein Leerzeichen hinzu.
-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 Zeilenterminatoren (SQL Server).
Wenn Sie das Feldabschlusszeichen in Hexadezimalschreibweise in einem bcp-Befehl angeben, wird der Wert bei 0x00 abgeschnitten. Wenn Sie beispielsweise 0x410041 angeben, wird 0x41 verwendet.
Wenn field_term mit einem Bindestrich (-) oder Schrägstrich (/) beginnt, fügen zwischen -t und dem Wert von field_term kein Leerzeichen hinzu.
Wertbehandlung
-k
Gibt an, dass leere Spalten während des Vorgangs einen NULL-Wert beibehalten, anstatt Standardwerte für die Spalten einzufügen. Weitere Informationen finden Sie unter Beibehalten von NULL-Werten oder Standardwerten während des Massenimports (SQL Server).
-E
Gibt an, dass der Vorgang Identitätswerte in der importierten Datendatei für die Identitätsspalte verwendet. Wenn Sie nicht angeben -E, ignoriert SQL Server die Identitätswerte für diese Spalte in der zu importierenden Datendatei und weist automatisch eindeutige Werte basierend auf dem Startwert und den während der Tabellenerstellung angegebenen Inkrementwerten zu. Weitere Informationen finden Sie unter DBCC CHECKIDENT.
Wenn die Datendatei keine Werte für die Identitätsspalte in der Tabelle oder Ansicht enthält, verwenden Sie eine Formatdatei, um anzugeben, dass die Identitätsspalte in der Tabelle oder Ansicht beim Importieren von Daten übersprungen werden soll. SQL Server weist automatisch eindeutige Werte für die Spalte zu.
Für die Option -E sind besondere Berechtigungen erforderlich. Weitere Informationen finden Sie weiter unten in diesem Artikel unter Hinweise.
File-I/O und Protokollierung
-i input_file
Gilt nur für: Nur Windows. Wird unter Linux und macOS nicht unterstützt.
Gibt den Namen einer Antwortdatei an. Die Datei enthält die Antworten auf die Eingabeaufforderungsfragen für jedes Datenfeld, wenn Sie einen Massenkopievorgang im interaktiven Modus (-n, -c, -woder -N nicht angegeben) ausführen.
Wenn input_file mit einem Bindestrich (-) oder Schrägstrich (/) beginnt, fügen zwischen -i und dem Wert input_file kein Leerzeichen hinzu.
-o Ausgabedatei
Gilt nur für: Nur Windows. Wird unter Linux und macOS nicht unterstützt.
Gibt den Namen einer Datei an, in die die Ausgabe von der Eingabeaufforderung umgeleitet wird.
Wenn output_file mit einem Bindestrich (-) oder Schrägstrich (/) beginnt, fügen zwischen -o und dem Wert output_file kein Leerzeichen hinzu.
-e err_file
Gibt den vollständigen Pfad einer Fehlerdatei an, in der alle Zeilen gespeichert werden, die das Hilfsprogramm bcp nicht von der Datei in die Datenbank übertragen kann. Die durch den bcp -Befehl generierten Fehlermeldungen werden an die Arbeitsstation des Benutzers gesendet. Wenn Sie diese Option nicht verwenden, wird keine Fehlerdatei erstellt.
Wenn err_file mit einem Bindestrich (-) oder Schrägstrich (/) beginnt, fügen Sie zwischen -e und dem Wert von err_file kein Leerzeichen hinzu.
Kompatibilität und Versionsverwaltung
-V { 80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170 }
Gilt nur für: Nur Windows. Wird unter Linux und macOS nicht unterstützt.
Führt den Massenkopiervorgang mithilfe von Datentypen aus einer früheren Version von SQL Serveraus. Diese Option fordert für keines der Felder zu einer Eingabe auf, sondern verwendet Standardwerte.
-
80= SQL Server 2000 (8.x) -
90= SQL Server 2005 (9.x) -
100= SQL Server 2008 (10.0.x) und SQL Server 2008 R2 (10.50.x) -
110= SQL Server 2012 (11.x) -
120= SQL Server 2014 (12.x) -
130= SQL Server 2016 (13.x) -
140= SQL Server 2017 (14.x) -
150= SQL Server 2019 (15.x) -
160= SQL Server 2022 (16.x) -
170= SQL Server 2025 (17.x)
Um beispielsweise Daten für Typen zu generieren, die SQL Server 2000 (8.x) nicht unterstützt, aber in späteren Versionen eingeführt wurden, verwenden Sie die -V80 Option.
Weitere Informationen finden Sie unter Importieren von Daten aus früheren SQL Server-Versionen im nativen Format oder im Zeichenformat.
Sonstige Optionen
-R
Gibt an, dass das bcp-Hilfsprogramm Währungs-, Datums- und Zeitdaten mithilfe des regionalen Formats, das für die Gebietsschemaeinstellung des Clientcomputers definiert ist, massiv in SQL Server kopiert. Standardmäßig ignoriert bcp regionale Einstellungen.
-v
Meldet die Versionsnummer und Copyrightinformationen des bcp -Hilfsprogramms.
Bemerkungen
Das bcp-Hilfsprogramm unterstützt systemeigene Datendateien, die mit allen unterstützten Versionen von SQL Server kompatibel sind.
Das bcp-Hilfsprogramm zeigt nur die ersten 512 Bytes einer Fehlermeldung an.
Erlaubnisse
Für einen bcp out Vorgang ist die SELECT Berechtigung auf der Quelltabelle erforderlich.
Ein bcp in-Vorgang erfordert mindestens SELECT- und INSERT-Berechtigungen für die Zieltabelle. Darüber hinaus ist die Berechtigung ALTER TABLE erforderlich, wenn eine der folgenden Bedingungen zutrifft:
Einschränkungen sind vorhanden, und der
CHECK_CONSTRAINTSHinweis ist nicht angegeben.Die Deaktivierung von Einschränkungen wurde als Standardverhalten festgelegt. Um Einschränkungen explizit zu aktivieren, verwenden Sie die
-hOption mit demCHECK_CONSTRAINTSHinweis.Trigger sind vorhanden, und der
FIRE_TRIGGERSHinweis wird nicht angegeben.In der Standardeinstellung werden Trigger nicht ausgelöst. Um Trigger explizit auszulösen, verwenden Sie die
-hOption mit demFIRE_TRIGGERSHinweis.Mithilfe der Option
-Eimportieren Sie Identitätswerte aus einer Datendatei.
Verwandte Inhalte
- Vorbereiten von Daten für den Massenexport oder -import
- MASSENEINFÜGUNG (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)
Hilfe erhalten
- Ideen für SQL: Haben Sie Vorschläge zur Verbesserung von SQL Server?
- Microsoft Q & A (SQL Server)
- DBA Stack Exchange (tag sql-server): Stellen Sie SQL Server Fragen
- Stack Overflow (tag sql-server): Antworten auf SQL-Entwicklungsfragen
- Microsoft SQL Server Lizenzbedingungen und -informationen
- Supportoptionen für Geschäftsbenutzer
- Zusätzliche SQL Server-Hilfe und Feedback
Zur SQL-Dokumentation beitragen
Wussten Sie schon, dass Sie SQL-Inhalte selbst bearbeiten könnten? Wenn Sie dies tun, helfen Sie nicht nur, unsere Dokumentation zu verbessern, sondern werden Sie auch als Mitwirkender der Seite erwähnt.
Weitere Informationen finden Sie unter Edit Microsoft Learn documentation.