Utiliser un fichier de format pour ignorer un champ de données (SQL Server)
Le nombre de champs contenus dans un fichier de données peut être supérieur au nombre de colonnes dans la table. Cette rubrique explique comment modifier les fichiers de format non-XML et XML en mappant les colonnes de la table avec les champs de données correspondants et en ignorant les champs supplémentaires afin de prendre en charge un fichier de données contenant davantage de champs.
Notes
Un fichier de format non XML ou XML peut être utilisé pour importer en bloc un fichier de données dans la table en utilisant une commande bcp , une instruction BULK INSERT ou INSERT ... INSTRUCTION SELECT * FROM OPENROWSET(BULK...) . Pour plus d’informations, consultez Utiliser un fichier de format pour importer des données en bloc (SQL Server).
Exemples de fichier de données et de table
Les fichiers de format modifiés pris en exemple dans cette rubrique sont fondés sur la table et le fichier de données suivants.
Exemple de table
Les exemples nécessitent qu’une table nommée myTestSkipField
soit créée dans l’exemple de base de données AdventureWorks2012 sous le dbo
schéma. Pour créer cette table, dans Microsoft SQL Server Management Studio Éditeur de requête, exécutez le code suivant :
USE AdventureWorks2012;
GO
CREATE TABLE myTestSkipField
(
PersonID smallint,
FirstName nvarchar(50) ,
LastName nvarchar(50)
);
GO
Fichier de données d'exemple
Le fichier de données, myTestSkipField-c.dat
, contient les enregistrements suivants :
1,Skipme,DataField3,DataField4
1,Skipme,DataField3,DataField4
1,Skipme,DataField3,DataField4
Pour effectuer l’importation en bloc de données de myTestSkipField-c.dat
dans la table myTestSkipField
, le fichier de format doit effectuer les tâches suivantes :
mapper le premier champ des données à la première colonne,
PersonID
;ignorer le deuxième champ des données ;
mapper le troisième champ des données à la deuxième colonne,
FirstName
;mapper le quatrième champ des données à la troisième colonne,
LastName
.
Fichier de format non-XML pour davantage de champs de données
Le fichier de format suivant, myTestSkipField.fmt
, mappe les champs de myTestSkipField-c.dat
aux colonnes de la table myTestSkipField
. Ce fichier de format utilise le format de données caractères. Pour ignorer le mappage d'une colonne, vous devez attribuer à son ordre de colonne la valeur 0, à l'image de la colonne ExtraField
dans le fichier de format.
Le fichier de format myTestSkipField.fmt
contient les informations suivantes :
9.0
4
1 SQLCHAR 0 7 "," 1 PersonID ""
2 SQLCHAR 0 100 "," 0 ExtraField SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 100 "," 2 FirstName SQL_Latin1_General_CP1_CI_AS
4 SQLCHAR 0 100 "\r\n" 3 LastName SQL_Latin1_General_CP1_CI_AS
Notes
Pour plus d’informations sur la syntaxe des fichiers de format non XML, consultez Fichiers de format non XML (SQL Server).
Exemples
Cet exemple fait appel à INSERT ... SELECT * FROM OPENROWSET(BULK...)
et utilise le fichier de format myTestSkipField.fmt
. Dans cet exemple, le fichier de données myTestSkipField-c.dat
est importé en bloc dans la table myTestSkipField
. Pour créer l'exemple de fichier de données et de table, consultez la section « Exemples de fichier de données et de table », plus haut dans cette rubrique.
Dans le SQL Server Management Studio Éditeur de requête, exécutez le code suivant :
USE AdventureWorks2012;
GO
INSERT INTO myTestSkipField
SELECT *
FROM OPENROWSET(BULK 'C:\myTestSkipField-c.dat',
FORMATFILE='C:\myTestSkipField.fmt'
) AS t1;
GO
Fichier de format XML pour davantage de champs de données
Le fichier de format présenté dans cet exemple est basé sur un autre fichier de format, myTestSkipField.xml
, qui utilise un format de données de caractères et dont le nombre et l'ordre des champs correspondent exactement à ceux des colonnes de la table myTestSkipField
. Pour afficher le contenu de ce fichier de format, consultez Créer un fichier de format (SQL Server).
Le fichier de format suivant, myTestSkipField.xml
, mappe les champs de myTestSkipField-c.dat
aux colonnes de la table myTestSkipField
. Ce fichier de format utilise le format de données caractères.
Le fichier de format myTestSkipField.xml
contient les informations suivantes :
<?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="," MAX_LENGTH="7"/>
<FIELD ID="2" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
<FIELD ID="3" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
<FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
</RECORD>
<ROW>
<COLUMN SOURCE="1" NAME="PersonID" xsi:type="SQLSMALLINT"/>
<COLUMN SOURCE="3" NAME="FirstName" xsi:type="SQLNVARCHAR"/>
<COLUMN SOURCE="4" NAME="LastName" xsi:type="SQLNVARCHAR"/>
</ROW>
</BCPFORMAT>
Exemples
Cet exemple fait appel à INSERT ... SELECT * FROM OPENROWSET(BULK...)
et utilise le fichier de format myTestSkipField.Xml
. Dans cet exemple, le fichier de données myTestSkipField-c.dat
est importé en bloc dans la table myTestSkipField
. Pour créer l'exemple de fichier de données et de table, consultez la section « Exemples de fichier de données et de table », plus haut dans cette rubrique.
Dans le SQL Server Management Studio Éditeur de requête, exécutez le code suivant :
USE AdventureWorks2012;
GO
INSERT INTO myTestSkipField
SELECT *
FROM OPENROWSET(BULK 'C:\myTestSkipField-c.dat',
FORMATFILE='C:\myTestSkipField.xml'
) AS t1;
GO
Notes
Pour plus d’informations sur la syntaxe du schéma XML et des exemples supplémentaires de fichiers de format XML, consultez Fichiers de format XML (SQL Server).
Voir aussi
Utilitaire bcp
BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL)
Utiliser un fichier de format pour ignorer une colonne de table (SQL Server)
Utiliser un fichier de format pour mapper les colonnes d’une table aux champs d’un fichier de données (SQL Server)