Beispiele für XML-Formatdateien

Die Beispiele in diesem Thema veranschaulichen die Hauptaspekte bei der Verwendung von XML-Formatdateien. Die Syntax einer Formatdatei ist unabhängig von der Richtung des Vorgangs, die Syntax ist also für Massenexport und Massenimport identisch.

Die Beispiele veranschaulichen Folgendes:

  • Gleiches Anordnen von Zeichendatenfeldern und Tabellenspalten

  • Unterschiedliches Anordnen von Datenfeldern und Tabellenspalten

  • Auslassen eines Datenfelds

  • Zuordnen verschiedener Typen von Feldern zu Spalten

  • Zuordnen von XML-Daten zu einer Tabelle

  • Importieren von Feldern mit fester Länge oder fester Breite

HinweisHinweis

Informationen zum Erstellen von Formatdateien finden Sie unter Erstellen einer Formatdatei.

Beispiele

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.

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="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>
HinweisHinweis

Ein entsprechendes AdventureWorks2008R2-Beispiel finden Sie unter Erstellen einer Formatdatei.

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="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>
HinweisHinweis

Ein entsprechendes AdventureWorks2008R2-Beispiel finden Sie unter Verwenden einer Formatdatei zum Zuordnen von Tabellenspalten für Datendateifelder.

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="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>
HinweisHinweis

Ein entsprechendes AdventureWorks2008R2-Beispiel finden Sie unter Auslassen eines Datenfelds mithilfe einer Formatdatei.

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

Zusätzliche Beispiele

Die folgenden Themen enthalten weitere Beispiele sowohl für Nicht-XML-Dateien als auch für XML-Formatdateien: