Exemples de fichiers de format XML
Les exemples de cette rubrique illustrent des aspects essentiels de l'utilisation de fichiers de format XML. La syntaxe d'un fichier de format ne dépend pas de la direction dans laquelle s'effectue l'opération : elle est la même qu'il s'agisse d'une exportation ou d'une importation en bloc.
Les exemples illustrent les opérations suivantes :
Classement de champs de données caractères dans le même ordre que les colonnes d'une table
Classement de champs de données et de colonnes d'une table dans un ordre différent
Omission d'un champ de données
Mappage de différents types de champs sur des colonnes
Mappage de données XML sur une table
Importation de champs à longueur fixe ou à largeur fixe
[!REMARQUE]
Pour plus d'informations sur la création des fichiers de format, consultez Création d'un fichier de format.
Exemples
Dans les fichiers de données illustrés dans les exemples ci-dessous, <tab> indique un caractère de tabulation et <return>, un retour chariot.
A. Classement de champs de données caractères dans le même ordre que les colonnes d'une table
L'exemple suivant illustre un fichier de format XML décrivant un fichier de données qui contient trois champs de données caractères. Le fichier de format mappe le fichier de données sur une table contenant trois colonnes. Les champs de données correspondent un-à-un aux colonnes de la table.
Table (ligne) : Person (Age int, FirstName varchar(20), LastName varchar(30))
Fichier de données (enregistrement) : Age<tab>Firstname<tab>Lastname<retour>
Le fichier de format XML suivant lit les données du fichier de données et les écrit dans la table.
Dans l'élément <RECORD>, le fichier de format représente les valeurs de données de chacun des trois champs au format caractère. Pour chaque champ, l'attribut TERMINATOR indique le terminateur qui suit la valeur de données.
Les champs de données correspondent un-à-un aux colonnes de la table. Dans l'élément <ROW>, le fichier de format mappe la colonne Age au premier champ, la colonne FirstName au deuxième et la colonne LastName au troisième.
<?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>
[!REMARQUE]
Pour un exemple AdventureWorks équivalent, consultez Création d'un fichier de format.
B. Classement de champs de données et de colonnes d'une table dans un ordre différent
L'exemple suivant illustre un fichier de format XML décrivant un fichier de données qui contient trois champs de données caractères. Le fichier de format mappe le fichier de données sur une table contenant trois colonnes classées dans un ordre différent de celui des champs du fichier de données.
Table (ligne) : Person (Age int, FirstName varchar(20), LastName varchar(30))
Fichier de données (enregistrement) : Age<tab>Lastname<tab>Firstname<retour>
Dans l'élément <RECORD>, le fichier de format représente les valeurs de données de chacun des trois champs au format caractère.
Dans l'élément <ROW>, le fichier de format mappe la colonne Age au premier champ, la colonne FirstName au troisième et la colonneLastName au second.
<?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>
[!REMARQUE]
Pour un exemple AdventureWorks équivalent, consultez Utilisation d'un fichier de format pour mapper les colonnes d'une table sur les champs d'un fichier de données.
C. Omission d'un champ de données
L'exemple suivant illustre un fichier de format XML décrivant un fichier de données qui contient quatre champs de données caractères. Le fichier de format mappe le fichier de données sur une table contenant trois colonnes. Le deuxième champ de données ne correspond à aucune colonne de la table.
Table (ligne) : Person (Age int, FirstName varchar(20), LastName varchar(30))
Fichier de données (enregistrement) : Age<tab>employeeID<tab>Firstname<tab>Lastname<retour>
Dans l'élément <RECORD>, le fichier de format représente les valeurs de données de chacun des quatre champs au format caractère. Pour chaque champ, l'attribut TERMINATOR indique le terminateur qui suit la valeur de données.
Dans l'élément <ROW>, le fichier de format mappe la colonne Age au premier champ, la colonne FirstName au troisième et la colonneLastName au quatrième.
<?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>
[!REMARQUE]
Pour un exemple AdventureWorks équivalent, consultez Utilisation d'un fichier de format pour ignorer un champ de données.
D. Mappage de <FIELD> xsi:type sur <COLUMN> xsi:type
L'exemple suivant illustre différents types de champs et leurs mappages sur des colonnes.
<?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. Mappage de données XML sur une table
Dans l'exemple ci-dessous, une table (t_xml) vide à deux colonnes est créée : sa première colonne est mappée sur le type de données int et la seconde, sur le type de données xml.
CREATE TABLE t_xml (c1 int, c2 xml)
Le fichier de format XML suivant chargerait un fichier de données dans la table t_xml.
<?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. Importation de champs de longueur fixe ou de largeur fixe
L'exemple suivant décrit des champs fixes de 10 ou 6 caractères chacun. Le fichier de format représente ces longueurs-largeurs de champ sous la forme de LENGTH="10" et LENGTH="6", respectivement. Chaque ligne des fichiers de donnée se termine par une combinaison retour chariot/saut de ligne, {CR}{LF}, représentée par le fichier de format sous la forme TERMINATOR="\r\n".
<?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>
Autres exemples
Les rubriques suivantes contiennent des exemples supplémentaires de fichiers de format non XML et de fichiers de format XML :