Freigeben über


XML-Formatdateien (SQL Server)

SQL Server 2014 stellt ein XML-Schema bereit, das die Syntax zum Schreiben von XML-Formatdateien definiert, die zum Massenimport von Daten in eine SQL Server-Tabelle verwendet werden sollen. XML-Formatdateien müssen diesem Schema entsprechen, das in der XML-Schemadefinitionssprache (XSDL) 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, einer BULK INSERT-Anweisung oder einer 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 Utility.

Hinweis

Für den Massenexport und -import werden zwei Arten von Formatdateien unterstützt: Nicht-XML-Formatdateien und XML-Formatdateien. XML-Formatdateien bieten eine flexible und leistungsstarke Alternative zu Nicht-XML-Formatdateien. Informationen zu Nicht-XML-Formatdateien finden Sie unter Non-XML Format Files (SQL Server).For information about non-XML format files, see Non-XML Format Files (SQL Server)

Vorteile von XML-Formatdateien

  • XML-Formatdateien sind selbstbeschreibend, wodurch sie einfach zu lesen, zu erstellen und zu erweitern sind. Sie sind lesbar und machen es leicht zu verstehen, wie Daten während Massenvorgängen interpretiert werden.

  • XML-Formatdateien enthalten die Datentypen von Zielspalten. Die XML-Codierung beschreibt eindeutig die Datentypen und Datenelemente der Datendatei und die Zuordnung zwischen Datenelementen und Tabellenspalten.

    Dies ermöglicht die Trennung zwischen der Darstellung von Daten in der Datendatei und dem Datentyp, der jedem Feld in der Datei zugeordnet ist. Wenn beispielsweise eine Datendatei eine Zeichendarstellung der Daten enthält, geht der entsprechende SQL-Spaltentyp verloren.

  • Eine XML-Formatdatei ermöglicht das Laden eines Felds, das einen einzelnen Datentyp für große Objekte (LOB) aus einer Datendatei enthält.

  • Eine XML-Formatdatei kann verbessert werden, aber mit früheren Versionen kompatibel bleiben. Darüber hinaus erleichtert die Übersichtlichkeit der XML-Codierung die Erstellung mehrerer Formatdateien für eine bestimmte Datendatei. Dies ist nützlich, wenn Sie alle oder einige Datenfelder Spalten in verschiedenen Tabellen oder Ansichten zuordnen müssen.

  • Die XML-Syntax ist unabhängig von der Richtung des Vorgangs; d. h. die Syntax ist für den Massenexport und den Massenimport identisch.

  • Sie können XML-Formatdateien zum Massenimport von Daten in Tabellen oder nicht partitionierte Ansichten und zum Massenexport von Daten verwenden.

  • Für die FUNKTION OPENROWSET(BULK...) ist die Angabe einer Zieltabelle optional. Dies liegt daran, dass die Funktion auf der XML-Formatdatei basiert, um Daten aus einer Datendatei zu lesen.

    Hinweis

    Eine Zieltabelle ist mit dem bcp-Befehl und der BULK INSERT-Anweisung erforderlich, die die Zieltabellenspalten zum Ausführen der Typkonvertierung verwendet.

Struktur von XML-Formatdateien

Wie bei einer Nicht-XML-Formatdatei definiert eine XML-Formatdatei das Format und die Struktur der Datenfelder in einer Datendatei und ordnet diese Datenfelder Spalten in einer einzelnen Zieltabelle zu.

Eine XML-Formatdatei verfügt über zwei Hauptkomponenten, <RECORD> und <ROW>:

  • <RECORD> beschreibt die Daten, wie sie in der Datendatei gespeichert werden.

    Jedes <RECORD-Element> enthält einen Satz von mindestens einem <FIELD-Element> . Diese Elemente entsprechen Feldern in der Datendatei. Die grundlegende Syntax lautet wie folgt:

    <AUFZEICHNUNG>

    <FELD .../> [ ... n ]

    </AUFZEICHNUNG>

    Jedes <FIELD-Element> beschreibt den Inhalt eines bestimmten Datenfelds. Ein Feld kann nur einer Spalte in der Tabelle zugeordnet werden. Nicht alle Felder müssen Spalten zugeordnet werden.

    Ein Feld in einer Datendatei kann entweder eine feste/variable Länge oder ein zeichenendes Zeichen sein. Ein Feldwert kann wie folgt dargestellt werden: ein Zeichen (mithilfe einer Einzelbytedarstellung), ein breites Zeichen (mit Unicode-Zwei-Byte-Darstellung), ein systemeigenes Datenbankformat oder einen Dateinamen. Wenn ein Feldwert als Dateiname dargestellt wird, 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 Tabellenspalten. Die grundlegende Syntax lautet wie folgt:

    <RUDERN>

    <SPALTE .../> [ ... n ]

    </RUDERN>

    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 sie vom Massenvorgang zurückgegeben werden. Die XML-Formatdatei weist jedem <COLUMN-Element> einen lokalen Namen zu, der keine Beziehung zur Spalte in der Zieltabelle eines 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; d. h. die Syntax ist für den Massenexport und den Massenimport identisch. In diesem Abschnitt wird auch berücksichtigt, wie der Massenimport die <ROW-> und <COLUMN-Elemente> verwendet und wie der xsi:type-Wert eines Elements in einen Datensatz eingefügt wird.

Informationen dazu, wie die Syntax tatsächlichen XML-Formatdateien entspricht, finden Sie weiter unten in diesem Thema unter Beispiel-XML-Formatdateien.

Hinweis

Sie können eine Formatdatei ändern, um den Massenimport aus einer Datendatei zu ermöglichen, in der sich die Anzahl und/oder Reihenfolge der Felder von der Anzahl und/oder Reihenfolge der Tabellenspalten unterscheiden. Weitere Informationen finden Sie unter "Formatdateien für das Importieren oder Exportieren von Daten (SQL Server)".

Grundlegende Syntax des XML-Schemas

Diese Syntaxanweisungen zeigen nur die Elemente (<BCPFORMAT>, <RECORD>, FIELD>, <<ROW> und <COLUMN>) und ihre grundlegenden Attribute an.

<BCPFORMAT ...>

<AUFZEICHNUNG>

<FIELD ID = "fieldID" xsi:type = "fieldType" [...]

/>

</AUFZEICHNUNG>

<RUDERN>

<SPALTENQUELLE = "fieldID" NAME = "columnName" xsi:type = "columnType" [...]

/>

</RUDERN>

</BCPFORMAT>

Hinweis

Weitere Attribute, die dem Wert des xsi:type in einem <FIELD-> oder <COLUMN-Element> zugeordnet sind, werden weiter unten in diesem Thema beschrieben.

Schemaelemente

In diesem Abschnitt wird der Zweck jedes Elements zusammengefasst, das vom XML-Schema für XML-Formatdateien definiert wird. Die Attribute werden weiter unten in diesem Thema in separaten Abschnitten beschrieben.

<BCPFORMAT>
Ist das Formatdateielement, das die Datensatzstruktur einer bestimmten Datendatei und die Korrespondenz mit den Spalten einer Tabellenzeile in der Tabelle definiert.

<AUFZEICHNUNG.../>
Definiert ein komplexes Element, das mindestens ein <FIELD-Element> enthält. Die Reihenfolge, in der die Felder in der Formatdatei deklariert werden, ist die Reihenfolge, in der diese Felder in der Datendatei angezeigt werden.

<FELD.../>
Definiert ein Feld in der Datendatei, das Daten enthält.

Die Attribute dieses Elements werden weiter unten in diesem Thema in Attributen des <FIELD-Elements> erläutert.

<RUDERN.../>
Definiert ein komplexes Element, das ein oder <mehrere COLUMN-Elemente> enthält. Die Reihenfolge der <COLUMN-Elemente> ist unabhängig von der Reihenfolge der <FIELD-Elemente> in einer DATENSATZdefinition. 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 angegeben werden.

Weitere Informationen finden Sie weiter unten in diesem Thema unter Wie Massenimport das <ROW-Element> verwendet.

<SPALTE>
Definiert eine Spalte als Element (<COLUMN>). Jedes <COLUMN-Element> entspricht einem <FIELD-Element> (dessen ID im SOURCE-Attribut des <COLUMN-Elements> angegeben ist).

Die Attribute dieses Elements werden weiter unten in diesem Thema in Attributen des <COLUMN-Elements> erläutert. Siehe auch Wie der Massenimport das <COLUMN>-Element verwendet, im weiteren Verlauf dieses Themas.

</BCPFORMAT>
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:

<FELD

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 in Bezug auf die folgenden Attribute beschrieben:

Feldattribut BESCHREIBUNG Wahlfrei/

Erforderlich
ID ="fieldID" Gibt den logischen Namen des Felds in der Datendatei an. Die ID eines Felds ist der Schlüssel, der zum Verweisen auf das Feld verwendet wird.

<FIELD ID**="fieldID"/> ordnet <COLUMN SOURCE="fieldID"**/>
Erforderlich
xsi:type ="fieldType" Dies ist ein XML-Konstrukt (das wie ein Attribut verwendet wird), das den Typ der Instanz des Elements identifiziert. Der Wert von fieldType bestimmt, welche der optionalen Attribute (unten) in einer bestimmten Instanz erforderlich sind. Erforderlich (abhängig vom Datentyp)
LÄNGE ="n" Dieses Attribut definiert die Länge für eine Instanz eines Datentyps mit fester Länge.

Der Wert von n muss eine positive ganze Zahl sein.
Optional, außer wenn der xsi:type-Wert erforderlich ist.
PREFIX_LENGTH ="p" Dieses Attribut definiert die Präfixlänge für eine binäre Datendarstellung. Der PREFIX_LENGTH Wert p muss eine der folgenden Werte sein: 1, 2, 4 oder 8. Optional, außer wenn der xsi:type-Wert benötigt wird.
MAX_LENGTH ="m" Dieses Attribut ist die maximale Anzahl von Bytes, die in einem bestimmten Feld gespeichert werden können. Ohne eine Zieltabelle ist die maximale Spaltenlänge nicht bekannt. Das attribut MAX_LENGTH beschränkt die maximale Länge einer Ausgabezeichenspalte, wobei der für den Spaltenwert zugewiesene Speicher begrenzt wird. Dies ist besonders praktisch, wenn sie die BULK-Option der OPENROWSET-Funktion in einer SELECT FROM-Klausel verwenden.

Der Wert von m muss eine positive ganze Zahl sein. Standardmäßig beträgt die maximale Länge 8000 Zeichen für eine Zeichenspalte und 4000 Zeichen für eine nchar-Spalte .
Wahlfrei
COLLATION ="collationName" DIE KOLLATION ist nur für Zeichenfelder zulässig. Eine Liste der SQL-Sortiernamen finden Sie unter SQL Server Sortation Name (Transact-SQL). Wahlfrei
TERMINATOR = "terminator" Dieses Attribut gibt den Terminator eines Datenfelds an. Der Terminator kann ein beliebiges Zeichen sein. Der Terminator muss ein eindeutiges Zeichen sein, das nicht Teil der Daten ist.

Standardmäßig ist der Feldtrenner das Tabulatorzeichen (\t). Um eine Absatzmarke darzustellen, verwenden Sie \r\n.
Wird nur mit einem xsi:-Typ von Zeichendaten verwendet, für die dieses Attribut erforderlich ist.
Xsi:type-Werte des <FIELD-Elements>

Der xsi:type-Wert ist ein XML-Konstrukt (verwendet wie ein Attribut), das den Datentyp einer Instanz eines Elements identifiziert. Informationen zur Verwendung des "Einfügens des xsi:type-Werts in einen Datensatz" finden Sie weiter unten in diesem Abschnitt.

Der xsi:type-Wert des <FIELD-Elements> unterstützt die folgenden Datentypen.

<FIELD> xsi:Typwerte Erforderliche XML-Attribut(en)

für Datentyp
Optionale XML-Attribute(n)

für Datentyp
NativeFixed LENGTH Keiner.
NativePrefix PREFIX_LENGTH MAXIMALE_LÄNGE
CharFixed LENGTH VERGLEICHUNG
NCharFixed LENGTH VERGLEICHUNG
CharPrefix PREFIX_LENGTH MAX_LENGTH, SORTIERUNG
NCharPrefix PREFIX_LENGTH MAX_LENGTH, SORTIERUNG
CharTerm TERMINATOR MAX_LENGTH, SORTIERUNG
NCharTerm TERMINATOR MAX_LENGTH, SORTIERUNG

Weitere Informationen zu Microsoft SQL Server-Datentypen finden Sie unter "Datentypen (Transact-SQL)".

Attribute des <COLUMN-Elements>

In diesem Abschnitt werden die Attribute des <COLUMN-Elements> beschrieben, die in der folgenden Schemasyntax zusammengefasst sind:

<SPALTE

SOURCE = "fieldID"

NAME = "columnName"

xsi:type = "columnType"

[LENGTH = "n" ]

[ PRECISION = "n" ]

[ SCALE = "Wert" ]

[ NULLABLE = { "JA" }

"NEIN" } ]

/>

Ein Feld wird einer Spalte in der Zieltabelle mit den folgenden Attributen zugeordnet:

COLUMN-Attribut BESCHREIBUNG Wahlfrei/

Erforderlich
SOURCE ="fieldID" Gibt die ID des Felds an, das der Spalte zugeordnet wird.

<COLUMN SOURCE**="fieldID"/> wird zugeordnet zu <FELD-ID="fieldID"**/>
Erforderlich
NAME = "columnName" Gibt den Namen der Spalte in der Zeilenmenge an, die durch die Formatdatei repräsentiert wird. Dieser Spaltenname wird verwendet, um die Spalte im Resultset zu identifizieren und muss nicht dem spaltennamen entsprechen, der in der Zieltabelle verwendet wird. Erforderlich
xsi**:**type ="ColumnType" Dies ist ein XML-Konstrukt (verwendet wie ein Attribut), das den Datentyp der Instanz des Elements identifiziert. Der Wert von ColumnType bestimmt, welche der optionalen Attribute (unten) in einer bestimmten Instanz erforderlich sind.

Hinweis: Die möglichen Werte von ColumnType und deren zugeordneten Attribute werden in der nächsten Tabelle aufgeführt.
Wahlfrei
LÄNGE ="n" Definiert die Länge für eine Instanz eines Datentyps mit fester Länge. LENGTH wird nur verwendet, wenn der xsi:type ein Zeichenfolgendatentyp ist.

Der Wert von n muss eine positive ganze Zahl sein.
Optional (nur verfügbar, wenn der xsi:type ein Zeichenfolgendatentyp ist)
PRÄZISION ="n" Gibt die Anzahl der Ziffern in 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 der xsi:type ein Datentyp variabler Zahl ist)
SCALE ="int" Gibt die Anzahl der Ziffern rechts neben dem Dezimalkomma in einer Zahl an. Beispielsweise hat die Zahl 123,45 eine Skala von 2.

Der Wert muss eine ganze Zahl sein.
Optional (nur verfügbar, wenn der xsi:type ein Datentyp variabler Zahl ist)
NULLABLE = { "JA"

"NO" }
Gibt an, ob eine Spalte NULL-Werte annehmen kann. Dieses Attribut ist vollständig unabhängig von FIELDS. Wenn eine Spalte jedoch nicht NULLABLE ist und das Feld NULL (durch Nichtangabe eines Werts) angibt, ergibt sich ein Laufzeitfehler.

Das NULLABLE-Attribut wird nur verwendet, wenn Sie eine einfache SELECT FROM OPENROWSET(BULK...)-Anweisung ausführen.
Optional (verfügbar für jeden Datentyp)
Xsi:type-Werte des <COLUMN-Elements>

Der xsi:type-Wert ist ein XML-Konstrukt (verwendet wie ein Attribut), das den Datentyp einer Instanz eines Elements identifiziert. Informationen zur Verwendung des "Einfügen des xsi:type-Werts in eine Datengruppe" weiter unten in diesem Abschnitt.

Das <COLUMN-Element> unterstützt native SQL-Datentypen wie folgt:

Kategorie eingeben <COLUMN-Datentypen> Erforderliche XML-Attribut(en)

für Datentyp
Optionale XML-Attribute(n)

für Datentyp
Repariert SQLBIT, SQLTINYINT, SQLSMALLINT, SQLINT, SQLBIGINT, SQLFLT4, SQLFLT8, SQLDATETIME, SQLDATETIM4, und SQLDATETIM8, SQLMONEY, SQLMONEY4, SQLVARIANT, SQLUNIQUEID Keiner. ausnullbar
Variable Zahl SQLDECIMAL und SQLNUMERIC Keiner. NULLFÄHIG, GENAUIGKEIT, SKALA
LOB SQLIMAGE, CharLOB, SQLTEXTund SQLUDT Keiner. NULLABLE
Zeichen lob SQLNTEXT Keiner. NULLABLE
Binäre Zeichenfolge SQLBINARY und SQLVARYBIN Keiner. NULLWERTE, LÄNGE
Zeichenfolge SQLCHAR, SQLVARYCHAR, SQLNCHARund SQLNVARCHAR Keiner. NULLFÄHIG, LÄNGE

Von Bedeutung

Verwenden Sie zum Massenexport oder -import von SQLXML-Daten einen der folgenden Datentypen in Ihrer Formatdatei: SQLCHAR oder SQL-VARYCHAR (die Daten werden auf der Clientcodeseite oder auf der Codeseite, die durch die Sortierung impliziert wird, gesendet), SQLNCHAR oder SQLNVARCHAR (die Daten werden als Unicode gesendet) oder SQLBINARY oder SQL-VARYBIN (die Daten werden ohne Konvertierung gesendet).

Weitere Informationen zu SQL Server-Datentypen finden Sie unter Datentypen (Transact-SQL).

Wie der <ROW>-Element durch den Massenimport verwendet wird

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:

  • bcp-Befehl

    Wenn Daten in eine Zieltabelle geladen werden, ignoriert bcp die <ROW-Komponente> . Stattdessen lädt bcp die Daten basierend auf den Spaltentypen der Zieltabelle.

  • Transact-SQL-Anweisungen (Bulk INSERT und OPENROWSETs Bulk Rowset Provider)

    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 auf Grundlage der in <ROW> angegebenen Spaltentypen und der entsprechenden Spalte in der Zieltabelle passende Datentypumwandlungen durch. Wenn zwischen Spaltentypen, wie in der Formatdatei und in der Zieltabelle angegeben, ein Konflikt besteht, tritt eine zusätzliche Typkonvertierung auf. Diese zusätzliche Typkonvertierung kann zu einer Diskrepanz (d. h. einem Genauigkeitsverlust) im Verhalten im Bulk INSERT- oder OPENROWSET-Bulk-Rowset-Anbieter im Vergleich zu bcp führen.

    Mit den <Informationen im ROW-Element> kann eine Zeile erstellt werden, ohne dass zusätzliche Informationen erforderlich sind. Aus diesem Grund können Sie ein Rowset mithilfe einer SELECT-Anweisung generieren (SELECT * FROM OPENROWSET(BULK datafile FORMATFILE=xmlformatfile).

    Hinweis

    Die OPENROWSET BULK-Klausel erfordert eine Formatdatei (beachten Sie, dass die Konvertierung vom Datentyp des Felds in den Datentyp einer Spalte nur mit einer XML-Formatdatei verfügbar ist).

Wie der <Massenimport> das COLUMN-Element verwendet

Zum Massenimport von Daten in eine Tabelle ordnen die Elemente im <COLUMN> einer Formatdatei ein Datendateifeld den Spalten der Tabelle zu, indem Folgendes angegeben wird:

  • Die Position jedes Felds innerhalb einer Zeile in der Datendatei.

  • Der Spaltentyp, der zum Konvertieren des Felddatentyps in den gewünschten Spaltendatentyp verwendet wird.

Wenn keine Spalte einem Feld zugeordnet ist, wird das Feld nicht in die generierten Zeilen kopiert. Mit diesem Verhalten kann eine Datendatei Zeilen mit unterschiedlichen Spalten (in verschiedenen Tabellen) generieren.

Ebenso ordnet jede <SPALTE> in der Formatdatei beim Massenexport von Tabellendaten die Spalte aus der Eingabetabelle dem entsprechenden Feld in der Ausgabedatei zu.

Einfügen des xsi:type-Werts in eine Datenmenge

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 das Dataset einfügen, indem Sie die XML-Formatdatei in ein XML-Dokument laden (z. B. myDoc), wie im folgenden Codeausschnitt gezeigt:

...;  
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");  
}  

XML-Beispielformatdateien

Dieser Abschnitt enthält Informationen zur Verwendung von XML-Formatdateien in einer Vielzahl von Fällen, einschließlich eines Adventure Works-Beispiels.

Hinweis

In den folgenden Beispielen zeigt <tab> ein Tabstoppzeichen in einer Datendatei an, und <return> steht für einen Wagenrücklauf.

Hinweis

Informationen zum Erstellen von Formatdateien finden Sie unter Create a Format File (SQL Server).For information about how to create format files, see Create a Format File (SQL Server).

A. Sortieren von Zeichendatenfeldern wie Tabellenspalten

Das folgende Beispiel zeigt eine XML-Formatdatei, die eine Datendatei beschreibt, die drei Zeichendatenfelder enthält. Die Formatdatei ordnet die Datendatei einer Tabelle zu, die drei Spalten enthält. Die Datenfelder entsprechen eins zu eins den Spalten der Tabelle.

Tabelle (Zeile): Person (Age int, FirstName varchar(20), LastName varchar(30))

Datendatei (Datensatz): Alter<Tabulator>Vorname<Tabulator>Nachname<Return>

Die folgende XML-Formatdatei liest aus der Datendatei in die Tabelle.

<RECORD> Im Element stellt die Formatdatei die Datenwerte in allen drei Feldern als Zeichendaten dar. Für jedes Feld gibt das TERMINATOR Attribut den Terminator an, der dem Datenwert folgt.

Die Datenfelder entsprechen 1:1 den Spalten der Tabelle. <ROW> Im Element ordnet die Formatdatei die Spalte Age dem ersten Feld, der Spalte FirstName dem zweiten Feld und der Spalte LastName dem dritten Feld zu.

<?xml version="1.0"?>  
<BCPFORMAT   
xmlns="https://schemas.microsoft.com/sqlserver/2004/bulkload/format"   
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  
  <RECORD>  
    <FIELD ID="1" xsi:type="CharTerm" TERMINATOR="\t"   
      MAX_LENGTH="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 AdventureWorks2012-Beispiel finden Sie unter Create a Format File (SQL Server).For an equivalent AdventureWorks2012 example, see Create a Format File (SQL Server).

B. Unterschiedliches Anordnen von Datenfeldern und Tabellenspalten

Das folgende Beispiel zeigt eine XML-Formatdatei, die eine Datendatei beschreibt, die drei Zeichendatenfelder enthält. 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): Alter<Tabulator>Nachname<Tabulator>Vorname<Zeilenumbruch>

<RECORD> Im Element stellt die Formatdatei die Datenwerte in allen drei Feldern als Zeichendaten dar.

Im <ROW>-Element ordnet die Formatdatei die Spalte Age dem ersten Feld, die Spalte LastName dem dritten Feld und die Spalte FirstName dem zweiten Feld zu.

<?xml version="1.0"?>  
<BCPFORMAT   
xmlns="https://schemas.microsoft.com/sqlserver/2004/bulkload/format"   
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  
  <RECORD>  
    <FIELD ID="1" xsi:type="CharTerm" TERMINATOR="\t"   
      MAX_LENGTH="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 entsprechendes AdventureWorks2012-Beispiel finden Sie unter "Verwenden einer Formatdatei zum Zuordnen von Tabellenspalten zu Data-File Feldern (SQL Server)".

C. Weglassen eines Datenfelds

Das folgende Beispiel zeigt eine XML-Formatdatei, die eine Datendatei beschreibt, die vier Zeichendatenfelder enthält. Die Formatdatei ordnet die Datendatei einer Tabelle zu, die drei Spalten enthält. Das zweite Datenfeld entspricht keiner Tabellenspalte.

Tabelle (Zeile): Person (Alter int, Vorname Varchar(20), Nachname Varchar(30))

Datendatei (Datensatz): Alter<tab>MitarbeiterID<tab>Vorname<tab>Nachname<return>

<RECORD> Im Element stellt die Formatdatei die Datenwerte in allen vier Feldern als Zeichendaten dar. Für jedes Feld gibt das TERMINATOR-Attribut den Terminator an, der dem Datenwert folgt.

Im <ROW>-Element ordnet die Formatdatei die Spalte Age dem ersten Feld, die Spalte FirstName dem dritten Feld und die Spalte LastName dem vierten Feld zu.

<BCPFORMAT   
xmlns="https://schemas.microsoft.com/sqlserver/2004/bulkload/format"   
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  
  <RECORD>  
    <FIELD ID="1" xsi:type="CharTerm" TERMINATOR="\t"   
      MAX_LENGTH="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>  

D. Zuordnen von <FIELD> xsi:type zu <COLUMN> xsi:type

Das folgende Beispiel zeigt verschiedene Typen von Feldern und deren Zuordnung zu Spalten.

<?xml version = "1.0"?>  
<BCPFORMAT  
xmlns="https://schemas.microsoft.com/sqlserver/2004/bulkload/format"   
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  
   <RECORD>  
      <FIELD 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. Zuordnen von XML-Daten zu einer Tabelle

Im folgenden Beispiel wird eine leere zweispaltige Tabelle (t_xml) erstellt, in der die erste Spalte dem int Datentyp zugeordnet ist und die zweite Spalte dem xml Datentyp zugeordnet ist.

CREATE TABLE t_xml (c1 int, c2 xml)  

Die folgende XML-Formatdatei würde eine Datendatei in Tabelle t_xml laden.

<?xml version="1.0"?>  
<BCPFORMAT xmlns="https://schemas.microsoft.com/sqlserver/2004/bulkload/format"   
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  
 <RECORD>  
  <FIELD ID="1" xsi:type="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 von Feldern mit fester Länge oder fester Breite

Im folgenden Beispiel werden feste Felder mit jeweils 10 oder 6 Zeichen beschrieben. Die Formatdatei stellt diese Feldlängen als LENGTH="10" und Feldbreiten als LENGTH="6" dar. Jede Zeile der Datendateien endet mit einer Kombination aus Wagenrücklauf und Zeilenvorschub {CR}{LF}, die die Formatdatei als TERMINATOR="\r\n" darstellt.

<?xml version="1.0"?>  
<BCPFORMAT  
       xmlns="https://schemas.microsoft.com/sqlserver/2004/bulkload/format"  
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  
  <RECORD>  
    <FIELD ID="1" xsi:type="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 Themen:

Verwandte Aufgaben

Verwandte Inhalte

Keiner.

Siehe auch

Massenimport und -export von Daten (SQL Server)
Datentypen (Transact-SQL)
Nicht-XML-Formatdateien (SQL Server)
Formatdateien zum Importieren oder Exportieren von Daten (SQL Server)