Erstellen einer Formatdatei mit bcp (SQL Server)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

In diesem Artikel wird die Verwendung des Hilfsprogramms bcp zum Erstellen einer Formatdatei für eine bestimmte Tabelle erläutert. Die Formatdatei basiert auf der angegebenen Datentypoption (-n, -c, -w, oder -N) sowie auf den Tabellen- bzw. Sichttrennzeichen.

Wenn Sie einen Massenimport in eine SQL Server-Tabelle oder einen Massenexport von Daten aus einer Tabelle ausführen, können Sie eine Formatdatei als flexibles System zum Schreiben von Datendateien verwenden. Formatdateien müssen zur Kompatibilität mit anderen Datenformaten und zum Lesen von Datendateien aus anderen Softwareprogrammen nur geringfügig oder gar nicht bearbeitet werden.

Begrenzungen

Die Version des bcp Dienstprogramms (bcp.exe), die zum Lesen einer Formatdatei verwendet wird, muss dieselbe oder später als die zur Erstellung der Formatdatei verwendete Version sein. Zum Beispiel kann SQL Server 2025 (17.x) bcp eine Datei im Versionsformat 16.0 lesen, die von SQL Server 2022 (16.x) bcpgeneriert wird, aber SQL Server 2022 (16.x) bcp kann keine Datei im Versionsformat 17.0 lesen, die von SQL Server 2025 (17.x) bcperzeugt wird.

Hinweis

Diese Syntax, einschließlich Masseneinfügen, wird in Azure Synapse Analytics nicht unterstützt. Führen Sie in Azure Synapse Analytics und anderen Clouddatenbank-Plattformintegrationen Datenverschiebung über die COPY-Anweisung in Azure Data Factory oder mithilfe von T-SQL-Anweisungen wie COPY INTO und PolyBase aus.

Erstellen von Formatdateien

Der SQL Server unterstützt zwei Arten von Dateiformaten: Nicht-XML-Formate und XML-Formate. Nicht-XML ist das ursprüngliche Format, das von früheren Versionen von SQL Server unterstützt wird.

Im Allgemeinen sind XML-Formatdateien und Nicht-XML-Formatdateien austauschbar. Es empfiehlt sich jedoch, für Formatdateien XML-Syntax zu verwenden, weil sich im Vergleich zu Nicht-XML-Formatdateien mehrere Vorteile ergeben.

Die Codebeispiele in diesem Artikel verwenden die AdventureWorks2025- oder AdventureWorksDW2025 Beispieldatenbank, die Sie von der Microsoft SQL Server Samples and Community Projects Homepage herunterladen können. Adventure Works Cycles ist ein fiktionales Fertigungsunternehmen, das zum Demonstrieren von Datenbankkonzepten und -szenarien dient.

Erstellen Sie eine Formatdatei

Um mit bcp eine Formatdatei zu erstellen, geben Sie das Argument format an und verwenden Sie nul anstelle eines Datendateipfads. Die format Option erfordert immer die Option -f .

Um eine XML-Format-Datei zu erstellen, müssen Sie die -x Option angeben, zum Beispiel bcp <table_or_view> format nul -f <format_file_name> -x.

Um eine XML-Formatdatei zu kennzeichnen, verwenden Sie .xml als Dateinamenerweiterung, zum Beispiel MyTable.xml.

Informationen zur Struktur und Felder von XML-Formatdateien finden Sie unter XML-Format-Dateien.

Beispiele

Dieser Abschnitt enthält Beispiele, die zeigen, wie bcp zum Erstellen einer Formatdatei verwendet wird. Die HumanResources.Department -Tabelle enthält vier Spalten: DepartmentID, Name, GroupNameund ModifiedDate.

A. Erstellen Sie eine Formatdatei für Zeichendaten

Das folgende Beispiel erstellt eine Formatdatei für die HumanResources.Department Tabelle unter Verwendung von Zeichendatenformaten.

Erstellen Sie eine XML-Datei namens Department-c.xml. Die Formatdatei verwendet einen nicht-standardmäßigen Feldterminator (,). Der folgende Abschnitt zeigt den Inhalt der generierten Formatdatei.

Der Befehl bcp enthält folgende Qualifikationen.

Qualifizierer Beschreibung
format nul -x -f <format_file> Gibt die XML-Formatdatei an.
-c Gibt Zeichendaten an.
-t, Gibt ein Komma (,) als Feldabschlusszeichen an.

Hinweis: Wenn von der Datendatei das standardmäßige Feldabschlusszeichen (\t) verwendet wird, ist der -t-Schalter nicht erforderlich.
-T Gibt an, dass bcp unter Verwendung der integrierten Sicherheit eine vertrauenswürdige Verbindung mit SQL Server herstellt. Wenn Sie -T nicht angeben, müssen Sie -U und -P angeben, um sich erfolgreich anzumelden.

Geben Sie an der Windows-Eingabeaufforderung den folgenden bcp -Befehl ein:

bcp AdventureWorks2025.HumanResources.Department format nul -c -x -f Department-c.xml -t, -T

Die generierte Formatdatei, Department-c.xml, enthält die folgenden XML-Elemente:

<?xml version="1.0"?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RECORD>
  <FIELD ID="1" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="7"/>
  <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="24"/>
</RECORD>
<ROW>
  <COLUMN SOURCE="1" NAME="DepartmentID" xsi:type="SQLSMALLINT"/>
  <COLUMN SOURCE="2" NAME="Name" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="3" NAME="GroupName" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="4" NAME="ModifiedDate" xsi:type="SQLDATETIME"/>
</ROW>
</BCPFORMAT>

Informationen zur Syntax dieser Formatdatei finden Sie unter XML-Formatdateien. Informationen zu Zeichendaten finden Sie unter Zeichenformat zum Importieren oder Exportieren von Daten.

B. Erstellen Sie eine Formatdatei für native Daten

Das folgende Beispiel erstellt eine Formatdatei für die HumanResources.Department Tabelle mit nativen Datentypen.

Erstellen Sie eine XML-Datei namens Department-n.xml. Der folgende Abschnitt zeigt den Inhalt der generierten Formatdatei.

Der Befehl bcp enthält folgende Qualifikationen.

Qualifizierer Beschreibung
format nul -x -f <format_file> Gibt die XML-Formatdatei an.
-n Gibt systemeigene Datentypen an.
-T Gibt an, dass bcp unter Verwendung der integrierten Sicherheit eine vertrauenswürdige Verbindung mit SQL Server herstellt. Wenn Sie -T nicht angeben, müssen Sie -U und -P angeben, um sich erfolgreich anzumelden.

Geben Sie an der Windows-Eingabeaufforderung den folgenden bcp -Befehl ein:

bcp AdventureWorks2025.HumanResources.Department format nul -x -f Department-n.xml -n -T

Die generierte Formatdatei, Department-n.xml, enthält die folgenden XML-Elemente:

<?xml version="1.0"?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RECORD>
  <FIELD ID="1" xsi:type="NativeFixed" LENGTH="2"/>
  <FIELD ID="2" xsi:type="NCharPrefix" PREFIX_LENGTH="2" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="3" xsi:type="NCharPrefix" PREFIX_LENGTH="2" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="4" xsi:type="NativeFixed" LENGTH="8"/>
</RECORD>
<ROW>
  <COLUMN SOURCE="1" NAME="DepartmentID" xsi:type="SQLSMALLINT"/>
  <COLUMN SOURCE="2" NAME="Name" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="3" NAME="GroupName" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="4" NAME="ModifiedDate" xsi:type="SQLDATETIME"/>
</ROW>
</BCPFORMAT>

Informationen zur Syntax dieser Formatdatei finden Sie unter XML-Formatdateien. Informationen zur Verwendung nativer Daten finden Sie unter Native-Format zum Importieren oder Exportieren von Daten.

C. Erstellen einer Nicht-XML-Formatdatei für native Unicode-Daten

Verwenden Sie zum Erstellen einer Nicht-XML-Formatdatei für systemeigene Unicode-Daten für die HumanResources.Department-Tabelle den folgenden Befehl:

bcp AdventureWorks2025.HumanResources.Department format nul -T -N -f Department-n.fmt

Weitere Informationen zur Verwendung von Unicode-Native-Daten finden Sie unter Verwenden Sie Unicode Native Format zum Importieren oder Exportieren von Daten.

D. Erstellen einer Nicht-XML-Formatdatei für Unicode-Zeichendaten

Verwenden Sie zum Erstellen einer Nicht-XML-Formatdatei für Unicode-Zeichendaten für die HumanResources.Department-Tabelle, die Standardterminatoren verwendet, den folgenden Befehl:

bcp AdventureWorks2025.HumanResources.Department format nul -T -w -f Department-w.fmt

Weitere Informationen zur Verwendung von Unicode-Zeichendaten finden Sie unter Verwenden des Unicode-Zeichenformats zum Importieren oder Exportieren von Daten.

E. Verwenden Sie eine Formatdatei mit der Codeseitenoption

Wenn Sie mit bcp format eine Formatdatei erstellen, werden Informationen über die Sortierreihenfolge und die Codepage in die Formatdatei geschrieben.

Die folgende Beispielformatdatei, für eine Tabelle mit fünf Spalten, beinhaltet die Sortierung.

13.0
5
1  SQLCHAR         0       0       "\t"             1     c_0          Cyrillic_General_CS_AS
2  SQLCHAR         0       0       "\t"             2     c_1          Cyrillic_General_CS_AS
3  SQLCHAR         0       3000    "\t"             3     c_2          Cyrillic_General_CS_AS
4  SQLCHAR         0       5       "\t"             4     c_3          ""
5  SQLCHAR         0       41      "!!!\r\r\n"      5     c_4          ""

Wenn Sie versuchen, Daten in SQL Server zu importieren, indem Sie bcp in -c -C65001 -f format_file ... verwenden oder mit BULK INSERT oder OPENROWSET mit FORMATFILE='format_file' CODEPAGE=65001 ..., haben die Sortierungs- oder Codepageinformationen in der Formatdatei Vorrang vor der Option 65001.

Daher müssen Sie, wenn Sie eine Formatdatei erstellen, die Sortierungsinformationen manuell aus der generierten Formatdatei löschen, bevor Sie mit dem Import der Daten in SQL Server beginnen.

Das folgende Beispiel zeigt die Formatdatei ohne die Sortierungsinformationen.

13.0
5
1  SQLCHAR         0       0       "\t"             1     c_0              ""
2  SQLCHAR         0       0       "\t"             2     c_1              ""
3  SQLCHAR         0       3000    "\t"             3     c_2              ""
4  SQLCHAR         0       5       "\t"             4     c_3              ""
5  SQLCHAR         0       41      "!!!\r\r\n"      5     c_4              ""

Zuordnen von Datenfeldern zu Tabellenspalten

Eine von erstellte Formatdatei bcp beschreibt alle Tabellenspalten in der Reihenfolge. Du kannst eine Formatdatei ändern, um Tabellenspalten neu zu ordnen oder wegzulassen. Sie können Formatdateien an Datendateien anpassen, deren Felder nicht direkt Tabellenspalten zugeordnet werden können. Weitere Informationen finden Sie in den folgenden Artikeln: