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-Datenbank
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Server stellt ein XML-Schema bereit, das die Syntax für das Schreiben von XML-Formatdateien definiert, die zum Übertragen von Daten in eine SQL Server-Tabelle per Massenimport verwendet werden. XML-Formatdateien müssen sich an dieses Schema halten, das in XSDL (XML Schema Definition Language) definiert ist. XML-Formatdateien werden nur unterstützt, wenn die SQL Server -Tools zusammen mit SQL Server Native Client installiert werden.
Sie können eine XML-Formatdatei mit einem bcp-Befehl, BULK INSERT-Anweisung oder INSERT ... SELECT * FROM OPENROWSET(BULK...)-Anweisung verwenden. Mit dem Befehl "bcp " können Sie automatisch eine XML-Formatdatei für eine Tabelle generieren. weitere Informationen finden Sie unter bcp-Hilfsprogramm.
Zwei Typen von Formatdateien werden zum Massenexportieren und -importieren unterstützt: Nicht-XML-Formatdateien und XML-Formatdateien. XML-Formatdateien bieten eine flexible und leistungsfähige Alternative zu Nicht-XML-Formatdateien. Informationen zu Nicht-XML-Formatdateien finden Sie unter Verwenden von Nicht-XML-Formatdateien (SQL Server).
Hinweis
Diese Syntax, einschließlich Masseneinfügen, wird in Azure Synapse Analytics nicht unterstützt. Führen Sie in Azure Synapse Analytics und anderen Clouddatenbankplattformintegrationen Datenbewegungen über die COPY-Anweisung in Azure Data Factory oder mithilfe von T-SQL-Anweisungen wie COPY INTO und PolyBase durch.
Vorteile von XML-Formatdateien
XML-Formatdateien sind selbstbeschreibend, wodurch das Lesen, Erstellen und Erweitern erleichtert wird. Sie sind lesbar, sodass Sie leicht verstehen können, wie Daten während Massenvorgängen interpretiert werden.
XML-Formatdateien enthalten die Datentypen von Zielspalten. Die XML-Codierung enthält eine klare Beschreibung der Datentypen und Datenelemente der Datendatei sowie der Zuordnung zwischen den Datenelementen und den Tabellenspalten.
Dies ermöglicht die Trennung zwischen der Darstellungsweise von Daten in den Datendateien und der Zuordnung des betreffenden Datentyps für jedes Feld in der Datei. Wenn z. B. eine Datendatei eine Zeichendarstellung der Daten enthält, geht der entsprechende SQL-Spaltentyp verloren.
Eine XML-Formatdatei ermöglicht das Laden eines Felds aus einer Datendatei, das einen einzigen LOB-Datentyp (Large Object) enthält.
Eine XML-Formatdatei kann erweitert werden und bleibt dennoch mit früheren Versionen kompatibel. Darüber hinaus erleichtert die Übersichtlichkeit der XML-Codierung die Erstellung mehrerer Formatdateien für eine bestimmte Datendatei. Dies ist von Nutzen, wenn Sie alle oder einige Datenfelder den Spalten in verschiedenen Tabellen oder Sichten zuordnen müssen.
Die XML-Syntax einer Formatdatei ist unabhängig von der Richtung des Vorgangs, die Syntax ist also für Massenexport und Massenimport identisch.
Sie können XML-Formatdateien verwenden, um Massenimporte von Daten in Tabellen bzw. nicht partitionierte Sichten oder Massenexporte von Daten auszuführen.
Das Angeben einer Zieltabelle für die Funktion OPENROWSET(BULK...) ist optional. Das liegt daran, dass die Funktion die XML-Formatdatei zum Lesen von Daten aus einer Datendatei benötigt.
Hinweis
Eine Zieltabelle ist mit dem Befehl "bcp " und der BULK INSERT Anweisung erforderlich, die die Zieltabellenspalten verwendet, um die Typkonvertierung auszuführen.
Struktur von XML-Formatdateien
XML-Formatdateien definieren, ebenso wie Nicht-XML-Formatdateien, das Format und die Struktur der Datenfelder in einer Datendatei und ordnen diese Datenfelder den Spalten in einer einzigen Zieltabelle zu.
Eine XML-Formatdatei verfügt über zwei Hauptkomponenten, <RECORD> und <ROW>.
<RECORD>beschreibt die Daten, wie sie in der Datendatei gespeichert sind.Jedes
<RECORD>Element enthält einen Satz von mindestens einem<FIELD>Element. Diese Elemente entsprechen den Feldern in der Datendatei. Die Basissyntax lautet wie folgt:<RECORD> <FIELD .../> [ ...n ] </RECORD>Jedes
<FIELD>Element beschreibt den Inhalt eines bestimmten Datenfelds. Ein Feld kann jeweils nur einer Spalte in der Tabelle zugeordnet werden. Nicht alle Felder müssen Spalten zugeordnet werden.Ein Feld in einer Datendatei kann eine feste bzw. variable Länge aufweisen oder durch Zeichen abgeschlossen sein. Ein Feldwert kann wie folgt dargestellt werden: ein Zeichen (mithilfe einer Einzelbytedarstellung), ein breites Zeichen (mit Unicode-2-Byte-Darstellung), ein systemeigenes Datenbankformat oder einen Dateinamen. Wird ein Feldwert als Dateiname dargestellt, verweist der Dateiname auf die Datei, die den Wert einer BLOB-Spalte in der Zieltabelle enthält.
<ROW>beschreibt, wie Datenzeilen aus einer Datendatei erstellt werden, wenn die Daten aus der Datei in eine SQL Server-Tabelle importiert werden.Ein
<ROW>Element enthält eine Reihe von<COLUMN>Elementen. Diese Elemente entsprechen den Tabellenspalten. Die Basissyntax lautet wie folgt:<ROW> <COLUMN .../> [ ...n ] </ROW>Jedes
<COLUMN>Element kann nur einem Feld in der Datendatei zugeordnet werden. Die Reihenfolge der<COLUMN>Elemente im<ROW>Element definiert die Reihenfolge, in der der Massenvorgang sie zurückgibt. Die XML-Formatdatei weist jedem<COLUMN>-Element einen lokalen Namen zu, der keine Beziehung zu der Spalte in der Zieltabelle des Massenimportvorgangs aufweist.
Schemasyntax für XML-Formatdateien
Dieser Abschnitt enthält eine Zusammenfassung der Elemente und Attribute des XML-Schemas für XML-Formatdateien. Die Syntax einer Formatdatei ist unabhängig von der Richtung des Vorgangs, die Syntax ist also für Massenexport und Massenimport identisch. In diesem Abschnitt wird auch berücksichtigt, wie der Massenimport die <ROW>- und die <COLUMN>-Elemente verwendet und wie der xsi:type-Wert eines Elements in einen Datensatz eingefügt wird.
Unter Beispiele für XML-Formatdateien können Sie die Syntax mit tatsächlichen XML-Formatdateien vergleichen.
Hinweis
Sie können eine Formatdatei so ändern, dass Sie einen Massenimport von einer Datendatei durchführen können, in der die Anzahl und/oder Reihenfolge der Felder von der Anzahl und/oder Reihenfolge der Tabellenspalten abweicht. Weitere Informationen finden Sie unter Formatdateien zum Importieren oder Exportieren von Daten (SQL Server).
Basissyntax des XML-Schemas
Diese Syntaxanweisungen zeigen nur die Elemente (<BCPFORMAT>, <RECORD>, , <FIELD><ROW>und <COLUMN>) und ihre grundlegenden Attribute an.
Hinweis
Weitere Attribute, die mit dem Wert des xsi:type im <FIELD>- oder <COLUMN>-Element verbunden sind, werden weiter unten in diesem Artikel beschrieben.
Schema-Elemente
In diesem Abschnitt werden die Funktionen aller Elemente dargestellt, die das XML-Schema für XML-Formatdateien definiert. Die Attribute werden weiter unten in diesem Artikel in separaten Abschnitten beschrieben.
<BCPFORMAT>Das Format-Dateielement definiert die Struktur eines bestimmten Datenfiles und deren Zuordnung zu den Spalten einer Tabellenzeile.
<RECORD .../>Definiert ein komplexes Element, das mindestens ein
<FIELD>Element enthält. Die Reihenfolge, in der die Felder in der Formatdatei deklariert werden, entspricht der Reihenfolge, in der diese Felder in der Datendatei angezeigt werden.<FIELD .../>Definiert ein Feld in der Datendatei, das Daten enthält. Die Attribute dieses Elements werden weiter unten in diesem Artikel in "Attributes of the
<FIELD>Element" erläutert.<ROW .../>Definiert ein komplexes Element, das mindestens ein
<COLUMN>Element enthält. Die Reihenfolge der<COLUMN>Elemente ist unabhängig von der Reihenfolge der<FIELD>Elemente in einerRECORDDefinition. Stattdessen bestimmt die Reihenfolge der<COLUMN>Elemente in einer Formatdatei die Spaltenreihenfolge des resultierenden Rowsets. Datenfelder werden in der Reihenfolge geladen, in der die entsprechenden<COLUMN>Elemente im<COLUMN>Element deklariert werden. Weitere Informationen finden Sie in diesem Artikel weiter unten unter Wie das Element<ROW>im Massenimport verwendet wird.<COLUMN>Definiert eine Spalte als Element (
<COLUMN>). Jedes<COLUMN>Element entspricht einem<FIELD>Element (dessen ID imSOURCEAttribut des<COLUMN>Elements angegeben ist). Die Attribute dieses Elements werden weiter unten in diesem Artikel in "Attributes of the<COLUMN>Element" erläutert. Weitere Informationen finden Sie später in diesem Artikel unter wie der Massenimport das<COLUMN>Element verwendet.</BCPFORMAT>Ist erforderlich, um die Formatdatei zu beenden.
Attribute des <FIELD> Elements
In diesem Abschnitt werden die Attribute des <FIELD> Elements beschrieben, die in der folgenden Schemasyntax zusammengefasst sind:
<FIELD
ID ="fieldID"
xsi:type ="fieldType"
[ LENGTH ="n" ]
[ PREFIX_LENGTH ="p" ]
[ MAX_LENGTH ="m" ]
[ COLLATION ="collationName" ]
[ TERMINATOR ="terminator" ]
/>
Jedes <FIELD> Element ist unabhängig von den anderen Elementen. Ein Feld wird anhand der folgenden Attribute beschrieben:
| FIELD-Attribut | Beschreibung | Wahlfrei/ Erforderlich |
|---|---|---|
| ID="fieldID" | Gibt den logischen Namen des Felds in der Datendatei an. Die ID eines Felds ist der Schlüssel, mit dem auf das Feld verwiesen wird. <FIELD ID="fieldID" /> wird zugeordnet zu <COLUMN SOURCE="fieldID" /> |
Erforderlich |
| xsi:type="fieldType" | Dies ist ein (als Attribut verwendetes) XML-Konstrukt, das den Typ der Instanz des Elements identifiziert. Der Wert von fieldType bestimmt, welche der optionalen Attribute , die Sie in einer bestimmten Instanz benötigen. | Erforderlich (abhängig vom Datentyp) |
| LENGTH="n" | Dieses Attribut definiert die Länge für eine Instanz mit einem Datentyp fester Länge. Der Wert von n muss eine positive ganze Zahl sein. |
Optional, es sei denn, der xsi:type Wert ist erforderlich. |
| PREFIX_LENGTH="p" | Dieses Attribut definiert die Präfixlänge für eine binäre Datendarstellung. Der PREFIX_LENGTH, p, muss einer der folgenden Werte sein: 1, , 2, , 4oder 8. |
Optional, es sei denn, der xsi:type Wert ist erforderlich. |
| MAX_LENGTH="m" | Dieses Attribut gibt die maximale Anzahl an Byte an, die in einem bestimmten Feld gespeichert werden kann. Ohne eine Zieltabelle ist die maximale Länge der Spalte nicht bekannt. Das MAX_LENGTH Attribut schränkt die maximale Länge einer Ausgabezeichenspalte ein, wobei der für den Spaltenwert zugewiesene Speicher begrenzt wird. Dies ist besonders praktisch bei der Verwendung der OPENROWSET Option der BULK Funktion in einer SELECT FROM Klausel.Der Wert von m muss eine positive ganze Zahl sein. Standardmäßig beträgt die maximale Länge 8.000 Zeichen für eine Zeichenspalte und 4.000 Zeichen für eine nchar-Spalte . |
Optional |
| COLLATION="collationName" |
COLLATION ist nur für Zeichenfelder zulässig. Eine Liste der SQL Server-Sortiernamen finden Sie unter SQL Server-Sortierungsname. |
Optional |
| TERMINATOR="Terminator" | Dieses Attribut gibt das Abschlusszeichen eines Datenfelds an. Als Abschlusszeichen kann jedes beliebige Zeichen verwendet werden. Es muss sich jedoch um ein eindeutiges Zeichen handeln, das nicht Teil der Daten ist. Standardmäßig ist der Feldterminator das Tabulatorzeichen (dargestellt als \t). Um eine Absatzmarke darzustellen, verwenden Sie \r\n. |
Dieses Attribut wird nur mit xsi:type der Zeichendaten verwendet, die dieses Attribut erfordern. |
xsi:typeWerte des<FIELD>ElementsDer
xsi:typeWert ist ein XML-Konstrukt (wie ein Attribut verwendet), das den Datentyp einer Instanz eines Elements identifiziert. Weitere Informationen finden Sie unter Einfügen des xsi:type-Werts in einen Datensatzabschnitt in diesem Artikel.Der
xsi:typeWert des<FIELD>Elements unterstützt die folgenden Datentypen.<FIELD>xsi:typeWerteErforderliche XML-Attribute
für DatentypOptionale XML-Attribute
für DatentypNativeFixedLENGTHKeine. NativePrefixPREFIX_LENGTHMAX_LENGTHCharFixedLENGTHCOLLATIONNCharFixedLENGTHCOLLATIONCharPrefixPREFIX_LENGTHMAX_LENGTH,COLLATIONNCharPrefixPREFIX_LENGTHMAX_LENGTH,COLLATIONCharTermTERMINATORMAX_LENGTH,COLLATIONNCharTermTERMINATORMAX_LENGTH,COLLATIONWeitere Informationen zu SQL Server-Datentypen finden Sie unter Datentypen.
Attribute des
<COLUMN>ElementsIn diesem Abschnitt werden die Attribute des
<COLUMN>Elements beschrieben, die in der folgenden Schemasyntax zusammengefasst sind:<COLUMN SOURCE = "fieldID" NAME = "columnName" xsi:type = "columnType" [ LENGTH = "n" ] [ PRECISION = "n" ] [ SCALE = "value" ] [ NULLABLE = { "YES" | "NO" } ] />Ein Feld wird mithilfe der folgenden Attribute einer Spalte in der Zieltabelle zugeordnet:
SPALTE-Attribut Beschreibung Wahlfrei/
ErforderlichSOURCE="fieldID" Gibt die ID des Felds an, das der Spalte zugeordnet wird.
<COLUMN SOURCE=fieldID„/> Zuordnung zu <FIELD ID=fieldID“/>Erforderlich NAME="columnName" Gibt den Namen der Spalte im Rowset an, die durch die Formatdatei dargestellt wird. Dieser Spaltenname wird verwendet, um die Spalte im Resultset zu identifizieren; er muss nicht dem in der Zieltabelle verwendeten Spaltennamen entsprechen. Erforderlich xsi:type="ColumnType" Dies ist ein (als Attribut verwendetes) XML-Konstrukt, das den Datentyp der Instanz des Elements identifiziert. Der Wert von ColumnType bestimmt, welche der optionalen Attribute , die Sie in einer bestimmten Instanz benötigen.
Anmerkung: Die möglichen Werte von ColumnType und deren zugeordneten Attribute werden in der<COLUMN>Elementtabelle in den xsi:type-Werten des <COLUMN-Elementabschnitts> aufgeführt.Optional LENGTH="n" Definiert die Länge für eine Instanz mit einem Datentyp fester Länge. LENGTHwird nur verwendet, wenn esxsi:typesich um einen Zeichenfolgendatentyp handelt.
Der Wert von n muss eine positive ganze Zahl sein.Optional (nur verfügbar, wenn es xsi:typesich um einen Zeichenfolgendatentyp handelt)PRECISION="n" Gibt die Anzahl der Stellen einer Zahl an. Beispielsweise hat die Zahl 123,45 eine Genauigkeit von 5.
Der Wert muss eine positive ganze Zahl sein.Optional (nur verfügbar, wenn es xsi:typesich um einen Datentyp variabler Zahl handelt)SCALE="int" Gibt die Anzahl der Stellen rechts vom Dezimaltrennzeichen einer Zahl an. Beispielsweise verfügt die Zahl 123,45 über 2 Dezimalstellen.
Der Wert muss eine ganze Zahl sein.Optional (nur verfügbar, wenn es xsi:typesich um einen Datentyp variabler Zahl handelt)NULLABLE={ "JA" | "NEIN" } Gibt an, ob eine Spalte Werte annehmen NULLkann. Dieses Attribut ist unabhängig vonFIELDS. Wenn jedoch eine Spalte keine NULL-Werte zulässt und ein FeldNULLangibt (ohne einen Wert zu spezifizieren), führt dies zu einem Laufzeitfehler.
DasNULLABLEAttribut wird nur verwendet, wenn Sie eine einfacheSELECT FROM OPENROWSET(BULK...)Anweisung ausführen.Optional (verfügbar für jeden beliebigen Datentyp)
xsi:typeWerte des<COLUMN>ElementsDer
xsi:typeWert ist ein XML-Konstrukt (wie ein Attribut verwendet), das den Datentyp einer Instanz eines Elements identifiziert. Weitere Informationen finden Sie unter „Einfügen desxsi:type-Werts in ein Dataset“ weiter unten in diesem Abschnitt.Das
<COLUMN>Element unterstützt native SQL-Datentypen wie folgt:Typkategorie <COLUMN>DatentypenErforderliche XML-Attribute
für DatentypOptionale XML-Attribute
für DatentypBehoben SQLBIT,SQLTINYINT,SQLSMALLINT,SQLINT,SQLBIGINT,SQLFLT4,SQLFLT8,SQLDATETIME,SQLDATETIM4, undSQLDATETIM8,SQLMONEY,SQLMONEY4,SQLVARIANT,SQLUNIQUEIDKeine. NULLABLEVariable Nummer SQLDECIMALundSQLNUMERICKeine. NULLABLE,PRECISIONSCALEVariables Datum und Uhrzeit SQLDATETIME2,SQLTIMESQLDATETIMEOFFSETKeine. NULLABLE,SCALELOB SQLIMAGE,CharLOB,SQLTEXTundSQLUDTKeine. NULLABLEZeichen LOB SQLNTEXTKeine. NULLABLEBinäre Zeichenfolge SQLBINARYundSQLVARYBINKeine. NULLABLE,LENGTHZeichenfolge SQLCHAR,SQLVARYCHAR,SQLNCHARundSQLNVARCHARKeine. NULLABLE,LENGTHWichtig
Verwenden Sie zum Massenexport oder Import von SQLXML-Daten einen der folgenden Datentypen in der Formatdatei:
SQLCHARoderSQLVARYCHAR(die Daten werden auf der Clientcodeseite gesendet oder auf der Codeseite, die durch die Sortierung impliziert wird),SQLNCHARoderSQLNVARCHAR(die Daten werden als Unicode gesendet) oderSQLBINARYoderSQLVARYBIN(die Daten werden ohne Konvertierung gesendet).Weitere Informationen zu SQL Server-Datentypen finden Sie unter Datentypen.
Wie der Massenimport das <ROW>-Element verwendet
Das <ROW> Element wird in einigen Kontexten ignoriert. Ob sich das <ROW> Element auf einen Massenimportvorgang auswirkt, hängt davon ab, wie der Vorgang ausgeführt wird:
Befehl bcp
Wenn Daten in eine Zieltabelle geladen werden, ignoriert bcp die
<ROW>Komponente. Stattdessen lädt bcp die Daten auf der Grundlage der Spaltentypen der Zieltabelle.Transact-SQL-Anweisungen (
BULK INSERTund Massenrowsetanbieter vonOPENROWSET)Beim Massenimport von Daten in eine Tabelle verwenden Transact-SQL Anweisungen die
<ROW>Komponente, um das Eingabe-Rowset zu generieren. Außerdem führen Transact-SQL Anweisungen geeignete Typkonvertierungen basierend auf den unter<ROW>und der entsprechenden Spalte in der Zieltabelle angegebenen Spaltentypen aus. Besteht eine Nichtübereinstimmung zwischen den Spaltentypen, die in der Formatdatei und in der Zieltabelle angegeben sind, wird eine zusätzliche Typkonvertierung durchgeführt. Diese zusätzliche Typkonvertierung kann zu einer Diskrepanz (d. h. einem Verlust an Präzision) im Verhalten des Massenrowset-Anbieters vonBULK INSERToderOPENROWSETim Vergleich zu bcp führen.Mit den
<ROW>Informationen im Element kann eine Zeile erstellt werden, ohne dass zusätzliche Informationen erforderlich sind. Aus diesem Grund können Sie ein Rowset mit einerSELECTAnweisung (SELECT * FROM OPENROWSET(BULK <data-file> FORMATFILE=<xml-format-file>) generieren.Für die
OPENROWSET BULKKlausel ist eine Formatdatei erforderlich. Das Konvertieren vom Datentyp des Felds in den Datentyp einer Spalte ist nur mit einer XML-Formatdatei verfügbar.
Wie der Massenimport das <COLUMN>-Element verwendet
Zum Massenimport von Daten in eine Tabelle ordnen die <COLUMN>-Elemente in einer Formatdatei Datendateifelder den Tabellenspalten zu, indem Folgendes angegeben wird:
Die Position jedes Felds innerhalb einer Zeile in der Datendatei.
Der Spaltentyp, der verwendet wird, um den Felddatentyp in den gewünschten Spaltendatentyp zu konvertieren.
Wenn keine Spalte einem Feld zugeordnet ist, wird das Feld nicht in die generierten Zeilen kopiert. Dieses Verhalten ermöglicht, dass eine Datendatei Zeilen mit unterschiedlichen Spalten (in verschiedenen Tabellen) generieren kann.
Entsprechend ordnet beim Massenexport von Daten aus einer Tabelle jedes <COLUMN>-Element in der Formatdatei die Spalte aus der Eingabetabellenzeile dem entsprechenden Feld in der Ausgabedatendatei zu.
Setzen des xsi:type Werts in einen Datensatz
Wenn ein XML-Dokument über die XSD-Sprache (XML Schema Definition) überprüft wird, wird der xsi:type Wert nicht in den Datensatz eingefügt. Sie können die xsi:type Informationen jedoch in den Datensatz einfügen, indem Sie die XML-Formatdatei in ein XML-Dokument laden (z. B. myDoc), wie im folgenden Codeausschnitt dargestellt.
...;
myDoc.LoadXml(xmlFormat);
XmlNodeList ColumnList = myDoc.GetElementsByTagName("COLUMN");
for (int i = 0; i < ColumnList.Count; i++)
{
Console.Write($"COLUMN: xsi:type={ColumnList[i].Attributes["type",
"http://www.w3.org/2001/XMLSchema-instance"].Value}\n");
}
Beispiele für XML-Formatdateien
Dieser Abschnitt enthält Informationen zur Verwendung von XML-Formatdateien in verschiedenen Fällen, einschließlich eines Adventure Works-Beispiels.
Hinweis
In den Datendateien, die in den folgenden Beispielen gezeigt werden, steht <tab> für ein Tabstoppzeichen in einer Datendatei, und <return> steht für einen Wagenrücklauf.
Die Beispiele veranschaulichen die Hauptaspekte bei der Verwendung von XML-Formatdateien:
- Sortieren von Zeichendatenfeldern, die mit Tabellenspalten identisch sind
- Datensatzfelder und Tabellenspalten unterschiedlich anordnen
- Ein Datenfeld weglassen
- Zuordnen verschiedener Feldtypen zu Spalten
- Zuordnen von XML-Daten zu einer Tabelle
- Importieren von Feldern mit fester Länge oder fester Breite
- Weitere Beispiele
Informationen zum Erstellen von Formatdateien finden Sie unter Erstellen einer Formatdatei mit bcp (SQL Server).
A. Ordnen Sie Zeichendatenfelder so wie Tabellenspalten
Das folgende Beispiel zeigt eine XML-Formatdatei, die eine Datendatei beschreibt, in der drei Felder mit Zeichendaten enthalten sind. Die Formatdatei ordnet die Datendatei einer Tabelle zu, die drei Spalten enthält. Die Datenfelder entsprechen den Spalten der Tabelle eins zu eins.
-
Tabelle (Zeile):
Person (Age INT, FirstName VARCHAR(20), LastName VARCHAR(30)) -
Datendatei (Datensatz):
Age<tab>FirstName<tab>LastName<return>
Die folgende XML-Formatdatei liest aus der Datendatei in die Tabelle.
Im <RECORD> -Element stellt die Formatdatei die Datenwerte in allen drei Feldern als Zeichendaten dar. Für jedes Feld gibt das TERMINATOR -Attribut das Abschlusszeichen an, das dem Datenwert folgt.
Die Datenfelder entsprechen den Spalten der Tabelle eins zu eins. Im <ROW> -Element ordnet die Formatdatei die Age -Spalte dem ersten Feld, die FirstName -Spalte dem zweiten Feld und die LastName -Spalte dem dritten Feld zu.
<?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="\t"
MAX_LENGTH="12" />
<FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\t"
MAX_LENGTH="20" COLLATION="SQL_Latin1_General_CP1_CI_AS" />
<FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\r\n"
MAX_LENGTH="30"
COLLATION="SQL_Latin1_General_CP1_CI_AS" />
</RECORD>
<ROW>
<COLUMN SOURCE="1" NAME="age" xsi:type="SQLINT" />
<COLUMN SOURCE="2" NAME="firstname" xsi:type="SQLVARYCHAR" />
<COLUMN SOURCE="3" NAME="lastname" xsi:type="SQLVARYCHAR" />
</ROW>
</BCPFORMAT>
Hinweis
Ein entsprechendes AdventureWorks2025 Beispiel, siehe Erstellen einer Formatdatei mit bcp (SQL Server).
B. Ordnen Sie Datenfelder und Tabellenspalten unterschiedlich
Das folgende Beispiel zeigt eine XML-Formatdatei, die eine Datendatei beschreibt, in der drei Felder mit Zeichendaten enthalten sind. Die Formatdatei ordnet die Datendatei einer Tabelle zu, die drei Spalten enthält, die anders angeordnet sind als die Felder der Datendatei.
-
Tabelle (Zeile):
Person (Age INT, FirstName VARCHAR(20), LastName VARCHAR(30)) -
Datendatei (Datensatz):
Age<tab>FirstName<tab>LastName<return>
Im <RECORD> -Element stellt die Formatdatei die Datenwerte in allen drei Feldern als Zeichendaten dar.
Im <ROW> -Element ordnet die Formatdatei die Age -Spalte dem ersten Feld, die FirstName -Spalte dem dritten Feld und die LastName -Spalte dem zweiten Feld zu.
<?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="\t"
MAX_LENGTH="12" />
<FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="20"
COLLATION="SQL_Latin1_General_CP1_CI_AS" />
<FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\r\n"
MAX_LENGTH="30" COLLATION="SQL_Latin1_General_CP1_CI_AS" />
</RECORD>
<ROW>
<COLUMN SOURCE="1" NAME="age" xsi:type="SQLINT" />
<COLUMN SOURCE="3" NAME="firstname" xsi:type="SQLVARYCHAR" />
<COLUMN SOURCE="2" NAME="lastname" xsi:type="SQLVARYCHAR" />
</ROW>
</BCPFORMAT>
Hinweis
Ein äquivalentes AdventureWorks2025 Beispiel finden Sie unter „Verwenden einer Formatdatei zum Zuordnen von Tabellenspalten zu Datenfelddateien (SQL Server)“.
C. Auslassen eines Datenfelds
Das folgende Beispiel zeigt eine XML-Formatdatei, die eine Datendatei beschreibt, in der vier Felder mit Zeichendaten enthalten sind. Die Formatdatei ordnet die Datendatei einer Tabelle zu, die drei Spalten enthält. Das zweite Datenfeld entspricht keiner Tabellenspalte.
-
Tabelle (Zeile):
Person (Age INT, FirstName VARCHAR(20), LastName VARCHAR(30)) -
Datendatei (Datensatz):
Age<tab>FirstName<tab>LastName<return>
Im <RECORD> -Element stellt die Formatdatei die Datenwerte in allen vier Feldern als Zeichendaten dar. Für jedes Feld gibt das TERMINATOR -Attribut das Abschlusszeichen an, das dem Datenwert folgt.
Im <ROW> -Element ordnet die Formatdatei die Age -Spalte dem ersten Feld, die FirstName -Spalte dem dritten Feld und die LastName -Spalte dem vierten Feld zu.
<?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="\t"
MAX_LENGTH="12" />
<FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\t"
MAX_LENGTH="10"
COLLATION="SQL_Latin1_General_CP1_CI_AS" />
<FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\t"
MAX_LENGTH="20"
COLLATION="SQL_Latin1_General_CP1_CI_AS" />
<FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\r\n"
MAX_LENGTH="30"
COLLATION="SQL_Latin1_General_CP1_CI_AS" />
</RECORD>
<ROW>
<COLUMN SOURCE="1" NAME="age" xsi:type="SQLINT" />
<COLUMN SOURCE="3" NAME="firstname" xsi:type="SQLVARYCHAR" />
<COLUMN SOURCE="4" NAME="lastname" xsi:type="SQLVARYCHAR" />
</ROW>
</BCPFORMAT>
Hinweis
Für ein entsprechendes AdventureWorks2025 Beispiel siehe Verwenden einer Formatdatei zum Überspringen eines Datenfelds (SQL Server).
D. Zuordnung von <FIELD> xsi:type zu <COLUMN> xsi:type
Das folgende Beispiel zeigt verschiedene Typen von Feldern und ihre Zuordnungen zu Spalten.
<?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 xsi:type="CharTerm" ID="C1" TERMINATOR="\t"
MAX_LENGTH="4" />
<FIELD xsi:type="CharFixed" ID="C2" LENGTH="10"
COLLATION="SQL_LATIN1_GENERAL_CP1_CI_AS" />
<FIELD xsi:type="CharPrefix" ID="C3" PREFIX_LENGTH="2"
MAX_LENGTH="32" COLLATION="SQL_LATIN1_GENERAL_CP1_CI_AS" />
<FIELD xsi:type="NCharTerm" ID="C4" TERMINATOR="\t"
MAX_LENGTH="4" />
<FIELD xsi:type="NCharFixed" ID="C5" LENGTH="10"
COLLATION="SQL_LATIN1_GENERAL_CP1_CI_AS" />
<FIELD xsi:type="NCharPrefix" ID="C6" PREFIX_LENGTH="2"
MAX_LENGTH="32" COLLATION="SQL_LATIN1_GENERAL_CP1_CI_AS" />
<FIELD xsi:type="NativeFixed" ID="C7" LENGTH="4" />
</RECORD>
<ROW>
<COLUMN SOURCE="C1" NAME="Age" xsi:type="SQLTINYINT" />
<COLUMN SOURCE="C2" NAME="FirstName" xsi:type="SQLVARYCHAR"
LENGTH="16" NULLABLE="NO" />
<COLUMN SOURCE="C3" NAME="LastName" />
<COLUMN SOURCE="C4" NAME="Salary" xsi:type="SQLMONEY" />
<COLUMN SOURCE="C5" NAME="Picture" xsi:type="SQLIMAGE" />
<COLUMN SOURCE="C6" NAME="Bio" xsi:type="SQLTEXT" />
<COLUMN SOURCE="C7" NAME="Interest" xsi:type="SQLDECIMAL"
PRECISION="5" SCALE="3" />
</ROW>
</BCPFORMAT>
E. Ordnen Sie XML-Daten zu einer Tabelle zu
Im folgenden Beispiel wird eine leere zweispaltige Tabelle (t_xml) erstellt, in der die erste Spalte dem int -Datentyp und die zweite Spalte dem xml -Datentyp zugeordnet ist.
CREATE TABLE t_xml (c1 INT, c2 XML);
Die folgende XML-Formatdatei lädt eine Datendatei in die t_xml-Tabelle.
<?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="NativePrefix" PREFIX_LENGTH="1" />
<FIELD ID="2" xsi:type="NCharPrefix" PREFIX_LENGTH="8" />
</RECORD>
<ROW>
<COLUMN SOURCE="1" NAME="c1" xsi:type="SQLINT" />
<COLUMN SOURCE="2" NAME="c2" xsi:type="SQLNCHAR" />
</ROW>
</BCPFORMAT>
F. Importieren Sie Felder mit fester Länge oder fester Breite
Im folgenden Beispiel werden Felder mit einer festen Länge bzw. Breite von jeweils 10 und 6 Zeichen beschrieben. Die Formatdatei stellt diese Feldlängen bzw. -breiten als LENGTH="10" und LENGTH="6"dar. Jede Zeile der Datendatei endet mit einer Kombination von Wagenrücklauf/Zeilenvorschub, <CR><LF>, was in der Formatdatei als TERMINATOR="\r\n" dargestellt wird.
<?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="CharFixed" LENGTH="10" />
<FIELD ID="2" xsi:type="CharFixed" LENGTH="6" />
<FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\r\n" />
</RECORD>
<ROW>
<COLUMN SOURCE="1" NAME="C1" xsi:type="SQLINT" />
<COLUMN SOURCE="2" NAME="C2" xsi:type="SQLINT" />
</ROW>
</BCPFORMAT>
Weitere Beispiele
Weitere Beispiele für Nicht-XML-Formatdateien und XML-Formatdateien finden Sie in den folgenden Artikeln:
- ● Überspringen einer Tabellenspalte mithilfe einer Formatdatei (SQL Server)
- Auslassen eines Datenfelds mithilfe einer Formatdatei (SQL Server)
- Verwenden einer Formatdatei zum Zuordnen von Tabellenspalten zu Datendateifeldern (SQL Server)
Verwandte Tasks
- Erstellen einer Formatdatei mit bcp (SQL Server)
- Massenimport von Daten mithilfe einer Formatdatei (SQL Server)
- ● Überspringen einer Tabellenspalte mithilfe einer Formatdatei (SQL Server)
- Auslassen eines Datenfelds mithilfe einer Formatdatei (SQL Server)
- Verwenden einer Formatdatei zum Zuordnen von Tabellenspalten zu Datendateifeldern (SQL Server)