Exportieren (0) Drucken
Alle erweitern
Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

XML-Formatdateien (SQL Server)

Themenstatus: Einige Informationen in diesem Thema sind vorläufig und können in zukünftigen Versionen geändert werden. In den Vorabinformationen werden neue Funktionen oder Änderungen an vorhandenen Funktionen in Microsoft SQL Server 2014 beschrieben.

SQL Server 2014 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.

Eine XML-Formatdatei kann mit dem Befehl bcp, einer BULK INSERT-Anweisung oder einer INSERT ... SELECT * FROM OPENROWSET(BULK...)-Anweisung verwendet werden. Mithilfe des bcp-Befehls können Sie automatisch eine XML-Formatdatei für eine Tabelle generieren. Weitere Informationen finden Sie unter bcp (Hilfsprogramm).

Hinweis Hinweis

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 Nicht-XML-Formatdateien (SQL Server).

In diesem Thema:

  • XML-Formatdateien sind selbstbeschreibend, wodurch das Lesen, Erstellen und Erweitern erleichtert wird. Sie können vom Benutzer gelesen werden, sodass dieser nachvollziehen kann, wie Daten bei 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.

  • Bei einer OPENROWSET (BULK...)-Funktion ist die Angabe einer Zieltabelle optional. Das liegt daran, dass die Funktion die XML-Formatdatei zum Lesen von Daten aus einer Datendatei benötigt.

    Hinweis Hinweis

    Beim bcp-Befehl und der BULK INSERT-Anweisung ist eine Zieltabelle erforderlich, die mithilfe der Zieltabellenspalten die Typkonvertierung durchführt.

[Nach oben]

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 besteht aus zwei Hauptkomponenten: <RECORD> und <ROW>:

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

    Jedes <RECORD>-Element enthält einen Satz mit einem oder mehreren <FIELD>-Elementen. 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 als ein Zeichen (mit Einzelbytedarstellung), als ein Doppelbytezeichen (mit Unicode-Doppelbytedarstellung), als ein systemeigenes Datenbankformat oder als ein Dateiname dargestellt werden. 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 aus einer Datendatei Datenzeilen konstruiert werden können, wenn die Daten aus der Datei in eine SQL Server-Tabelle importiert werden.

    Ein <ROW>-Element enthält einen Satz von <COLUMN>-Elementen. Diese Elemente entsprechen den Tabellenspalten. Die Basissyntax lautet wie folgt:

    <ROW>

       <COLUMN .../> [ ...n ]

    </ROW>

    Jedes <COLUMN>-Element kann jeweils nur einem Feld in der Datendatei zugeordnet werden. Die Reihenfolge der <COLUMN>-Elemente im <ROW>-Element definiert, in welcher Reihenfolge diese durch den Massenvorgang zurückgegeben werden. Die XML-Formatdatei weist jedem <COLUMN>-Element einen lokalen Namen zu, der keine Verbindung zu der Spalte in der Zieltabelle des Massenimportvorgangs aufweist.

[Nach oben]

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. Darüber hinaus wird in diesem Abschnitt dargestellt, wie <ROW>- und <COLUMN>-Elemente beim Massenimportieren verwendet werden und wie der xsi:type-Wert eines Elements in ein Dataset eingefügt wird.

Unter Beispiele für XML-Formatdateien weiter unten in diesem Thema können Sie die Syntax mit tatsächlichen XML-Formatdateien vergleichen.

Hinweis 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).

In diesem Abschnitt:

Basissyntax des XML-Schemas

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

<BCPFORMAT ...>

   <RECORD>

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

      />

   </RECORD>

   <ROW>

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

      />

   </ROW>

</BCPFORMAT>

Hinweis Hinweis

Zusätzliche Attribute, die mit dem Wert von xsi:type in einem <FIELD>- oder <COLUMN>-Element verknüpft sind, werden weiter unten in diesem Thema beschrieben.

In diesem Abschnitt:

[Nach oben]

Schema-Elemente

In diesem Abschnitt werden die Funktionen aller Elemente dargestellt, die das XML-Schema für XML-Formatdateien definiert. Die Attribute werden in separaten Abschnitten weiter unten in diesem Thema beschrieben.

<BCPFORMAT>

Ist das Element der Formatdatei, das die Datensatzstruktur einer bestimmten Datendatei und ihre Übereinstimmung mit den Spalten einer Tabellenzeile in einer Tabelle definiert.

<RECORD .../>

Definiert ein komplexes Element, das ein oder mehrere <FIELD>-Elemente 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 unter Attribute des <FIELD>-Elements weiter unten in diesem Thema beschrieben.

<ROW .../>

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 RECORD-Definition. Stattdessen bestimmt die Reihenfolge der <COLUMN>-Elemente in einer Formatdatei die Reihenfolge der Spalten im zurückgegebenen Rowset. Die Datenfelder werden in der Reihenfolge geladen, in der die entsprechenden <COLUMN>-Elemente im <COLUMN>-Element deklariert werden.

Weitere Informationen finden Sie unter Verwenden des <ROW>-Elements beim Massenimportieren weiter unten in diesem Thema.

<COLUMN>

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

Die Attribute dieses Elements werden unter Attribute des <COLUMN>-Elements weiter unten in diesem Thema beschrieben. Informationen finden Sie außerdem unter Verwenden des <COLUMN>-Elements beim Massenimportieren weiter unten in diesem Thema.

</BCPFORMAT>

Ist erforderlich, um die Formatdatei zu beenden.

[Nach oben]

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" ]

/>

Alle <FIELD>-Elemente sind unabhängig voneinander. Ein Feld wird anhand der folgenden Attribute beschrieben:

FIELD-Attribut

Beschreibung

Optional /

Required

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"/>

Required

xsi:type ="fieldType"

Dies ist ein (als Attribut verwendetes) XML-Konstrukt, das den Typ der Instanz des Elements identifiziert. Der Wert für fieldType bestimmt, welche der optionalen Attribute (unten) in einer bestimmten Instanz erforderlich sind.

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, sofern nicht für den xsi:type-Wert erforderlich

PREFIX_LENGTH ="p"

Dieses Attribut definiert die Präfixlänge für eine binäre Datendarstellung. Bei dem PREFIX_LENGTH-Wert p muss es sich um eine der folgenden Zahlen handeln: 1, 2, 4 oder 8.

Optional, sofern nicht für den xsi:type-Wert 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 Spaltenlänge nicht bekannt. Das MAX_LENGTH-Attribut beschränkt die maximale Länge einer Ausgabezeichenspalte sowie den Speicherplatz, der dem Spaltenwert zugewiesen ist. Dies ist vor allem bei Verwendung der BULK-Option der OPENROWSET-Funktion in einer SELECT FROM-Klausel nützlich.

Der Wert von m muss eine positive ganze Zahl sein. Standardmäßig beträgt die maximale Länge 8000 Zeichen für eine char-Spalte und 4000 Zeichen für eine nchar-Spalte.

Optional

COLLATION ="collationName"

COLLATION ist nur für Zeichenfelder zulässig. Eine Liste der SQL-Sortierungsnamen finden Sie unter SQL Server-Sortierungsname (Transact-SQL).

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 wird das Tabstoppzeichen (dargestellt als \t) als Abschlusszeichen verwendet. Um eine Absatzmarke darzustellen, verwenden Sie \r\n.

Wird nur mit einem xsi:type von Zeichendaten verwendet, die dieses Attribut erfordern.

[Nach oben]

Xsi:type-Werte des <FIELD>-Elements

Der xsi:type-Wert ist ein (als Attribut verwendetes) XML-Konstrukt, das den Datentyp für eine Instanz eines Elements identifiziert. Weitere Informationen finden Sie unter "Einfügen des xsi:type-Werts in ein Dataset" weiter unten in diesem Abschnitt.

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

xsi:type-Werte für <FIELD>

Erforderliche(s) XML-Attribut(e)

für Datentyp

Optionale(s) XML-Attribut(e)

für Datentyp

NativeFixed

LENGTH

Keiner.

NativePrefix

PREFIX_LENGTH

MAX_LENGTH

CharFixed

LENGTH

COLLATION

NCharFixed

LENGTH

COLLATION

CharPrefix

PREFIX_LENGTH

MAX_LENGTH, COLLATION

NCharPrefix

PREFIX_LENGTH

MAX_LENGTH, COLLATION

CharTerm

TERMINATOR

MAX_LENGTH, COLLATION

NCharTerm

TERMINATOR

MAX_LENGTH, COLLATION

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

[Nach oben]

Attribute des <COLUMN>-Elements

In 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:

COLUMN-Attribut

Beschreibung

Optional /

Required

SOURCE ="fieldID"

Gibt die ID des Felds an, das der Spalte zugeordnet wird.

<COLUMN SOURCE="fieldID"/> wird zugeordnet zu <FIELD ID="fieldID"/>

Required

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.

Required

xsi:type ="ColumnType"

Dies ist ein (als Attribut verwendetes) XML-Konstrukt, das den Datentyp der Instanz des Elements identifiziert. Der Wert für ColumnType bestimmt, welche der optionalen Attribute (unten) in einer bestimmten Instanz erforderlich sind.

Hinweis Hinweis

Mögliche Werte für ColumnType sowie die zugehörigen Attribute werden in der folgenden Tabelle aufgelistet.

Optional

LENGTH ="n"

Definiert die Länge für eine Instanz mit einem Datentyp fester Länge. LENGTH wird nur verwendet, wenn es sich bei xsi:type um einen Zeichenfolgen-Datentyp handelt.

Der Wert von n muss eine positive ganze Zahl sein.

Optional (nur verfügbar, wenn xsi:type ein Zeichenfolgen-Datentyp ist)

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 xsi:type ein Datentyp mit variablen Zahlen ist)

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 xsi:type ein Datentyp mit variablen Zahlen ist)

NULLABLE = { "YES"

"NO" }

Gibt an, ob eine Spalte NULL-Werte verarbeiten kann. Dieses Attribut ist unabhängig von FIELDS. Falls die Spalte jedoch nicht NULLABLE ist und für ein Feld NULL (d. h. kein Wert) angegeben wurde, tritt ein Laufzeitfehler auf.

Das NULLABLE-Attribut wird nur verwendet, wenn Sie eine einfache SELECT FROM OPENROWSET (BULK...)-Anweisung ausführen.

Optional (verfügbar für jeden beliebigen Datentyp)

[Nach oben]

Xsi:type-Werte des <COLUMN>-Elements

Der xsi:type-Wert ist ein (als Attribut verwendetes) XML-Konstrukt, das den Datentyp für eine Instanz eines Elements identifiziert. Weitere Informationen finden Sie unter "Einfügen des xsi:type-Werts in ein Dataset" weiter unten in diesem Abschnitt.

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

Typkategorie

<COLUMN>-Datentypen

Erforderliche(s) XML-Attribut(e)

für Datentyp

Optionale(s) XML-Attribut(e)

für Datentyp

Fest

SQLBIT , SQLTINYINT, SQLSMALLINT, SQLINT, SQLBIGINT, SQLFLT4, SQLFLT8, SQLDATETIME, SQLDATETIM4, SQLDATETIM8, SQLMONEY, SQLMONEY4, SQLVARIANT und SQLUNIQUEID

Keiner.

NULLABLE

Variable Zahl

SQLDECIMAL und SQLNUMERIC

Keiner.

NULLABLE, PRECISION, SCALE

LOB

SQLIMAGE , CharLOB, SQLTEXT und SQLUDT

Keiner.

NULLABLE

Character LOB

SQLNTEXT

Keiner.

NULLABLE

Binäre Zeichenfolge

SQLBINARY und SQLVARYBIN

Keiner.

NULLABLE, LENGTH

Zeichenfolge

SQLCHAR , SQLVARYCHAR, SQLNCHAR und SQLNVARCHAR

Keiner.

NULLABLE, LENGTH

Wichtiger Hinweis Wichtig

Verwenden Sie in Ihrer Formatdatei einen der folgenden Datentypen, um einen Massenexport oder -import von SQLXML-Daten auszuführen: SQLCHAR oder SQLVARYCHAR (die Daten werden in der Clientcodepage oder in der Codepage, die durch die Sortierung impliziert wird, gesendet), SQLNCHAR oder SQLNVARCHAR (die Daten werden als Unicode gesendet) oder SQLBINARY oder SQLVARYBIN (die Daten werden ohne Konvertierung gesendet).

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

[Nach oben]

Verwenden des <ROW>-Elements beim Massenimportieren

Das <ROW>-Element wird in bestimmten Kontexten ignoriert. Ob sich das <ROW>-Element auf einen Massenimportvorgang auswirkt, hängt davon ab, wie der Vorgang durchgeführt wird:

  • Der 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 INSERT und der OPENROWSET-Massenrowsetanbieter)

    Beim Massenimportieren von Daten in eine Tabelle verwenden Transact-SQL-Anweisungen die <ROW>-Komponente, um das Eingaberowset zu generieren. Darüber hinaus führen Transact-SQL-Anweisungen auf der Grundlage der unter <ROW> angegebenen Spaltentypen und der entsprechenden Spalte in der Zieltabelle die erforderlichen Typkonvertierungen durch. Besteht eine Nichtübereinstimmung zwischen den Spaltentypen, die in der Formatdatei und in der Zieltabelle angegeben sind, wird eine zusätzliche Typkonvertierung durchgeführt. Aufgrund dieser zusätzlichen Typkonvertierung kann es zu einer Diskrepanz (d. h. einem Genauigkeitsverlust) im Verhalten von BULK INSERT bzw. des OPENROWSET-Massenrowsetanbieters verglichen mit bcp kommen.

    Anhand der 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 Hinweis

    Die OPENROWSET BULK-Klausel erfordert eine Formatdatei (beachten Sie, dass eine Konvertierung vom Datentyp des Felds in den Datentyp der Spalte nur mit einer XML-Formatdatei möglich ist).

[Nach oben]

Verwenden des <COLUMN>-Elements beim Massenimportieren

Um einen Massenimport von Daten in eine Tabelle durchzuführen, ordnen die <COLUMN>-Elemente in einer Formatdatei den Tabellenspalten ein Datendateifeld zu, indem sie folgende Angaben machen:

  • 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.

Falls einem Feld keine Spalte zugeordnet ist, wird das Feld nicht in die generierte(n) Zeile(n) kopiert. Dieses Verhalten ermöglicht, dass eine Datendatei Zeilen mit unterschiedlichen Spalten (in verschiedenen Tabellen) generieren kann.

Entsprechend ordnet beim Massenexportieren von Daten aus einer Tabelle jedes <COLUMN>-Element in der Formatdatei die Spalte aus der Eingabetabellenzeile dem entsprechenden Feld in der Ausgabedatendatei zu.

[Nach oben]

Einfügen des xsi:type-Werts in ein Dataset

Wird ein XML-Dokument durch die XSD-Sprache (XML Schema Definition) überprüft, wird der xsi:type-Wert nicht in das Dataset 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 durch den folgenden Codeausschnitt veranschaulicht:

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

[Nach oben]

Dieser Abschnitt enthält Informationen zum Verwenden von XML-Formatdateien in verschiedenen Situationen, u. a. ein Adventure Works-Beispiel.

Hinweis 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:

Hinweis Hinweis

Informationen zum Erstellen von Formatdateien finden Sie unter Erstellen einer Formatdatei (SQL Server).

A.Gleiches Anordnen von Zeichendatenfeldern und 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>
HinweisHinweis

Ein entsprechendes AdventureWorks2012 -Beispiel finden Sie unter Erstellen einer Formatdatei (SQL Server).

[Nach oben]

B.Unterschiedliches Anordnen von Datenfeldern und 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 anders angeordnet sind als die Felder der Datendatei.

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

Datendatei (Datensatz): Age<tab>Lastname<tab>Firstname<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>
HinweisHinweis

Ein entsprechendes AdventureWorks2012 -Beispiel finden Sie unter Verwenden einer Formatdatei zum Zuordnen von Tabellenspalten zu Datendateifeldern (SQL Server).

[Nach oben]

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>employeeID<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>
HinweisHinweis

Ein entsprechendes AdventureWorks2012 -Beispiel finden Sie unter Auslassen eines Datenfelds mithilfe einer Formatdatei (SQL Server).

[Nach oben]

D.Zuordnen 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>

[Nach oben]

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 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>

[Nach oben]

F.Importieren von Feldern 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 aus 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>

[Nach oben]

Zusätzliche Beispiele

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2015 Microsoft