Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Dans le cas de champs de données de type caractère, des caractères facultatifs de fin vous permettent d'indiquer la fin de chaque champ inclus dans un fichier de données par un indicateur de fin de champ et la fin de chaque ligne par un indicateur de fin de ligne. Les caractères de fin constituent un moyen d'indiquer à des programmes en cours de lecture du fichier de données la fin d'un champ ou d'une ligne et le début du suivant.
Important
Lorsque vous utilisez le format natif ou natif Unicode, préférez les préfixes de longueur aux indicateurs de fin de champ. Les données au format natif peuvent en effet entrer en conflit avec les indicateurs de fin, car les fichiers de données sont stockés au format de données binaire interne de Microsoft SQL Server .
Caractères pris en charge en tant que terminateurs
La commande bcp , BULK INSERT
l’instruction et le OPENROWSET
fournisseur d’ensembles de lignes en bloc prennent en charge différents caractères en tant que terminateurs de champ ou de ligne et recherchent toujours la première instance de chaque terminateur. Le tableau ci-dessous répertorie les caractères pris en charge pour les terminateurs.
Caractère de terminaison | Indiqué par | Descriptif |
---|---|---|
Onglet | \t |
Il s'agit de l'indicateur de fin de champ par défaut. |
Caractère de saut de ligne | \n |
Il s'agit de l'indicateur de fin de ligne par défaut. |
Retour chariot/saut de ligne | \r |
|
Barre oblique inverse 1 | \ |
|
Terminator Null (terminator nonvisible) 2 | \0 |
|
Tout caractère imprimable (les caractères de contrôle ne sont pas imprimables, sauf null, tabulation, nouvelle ligne et retour chariot) | (* , , A , l t , et ainsi de suite) |
|
Une chaîne de 10 caractères imprimables maximum, y compris certains ou tous les indicateurs de fin énumérés précédemment | (**\t** , , end , \t-\n !!!!!!!!!! , et ainsi de suite) |
1 Seuls les t
caractères , , r
n
0
et \0
les caractères fonctionnent avec le caractère d’échappement de barre oblique inverse, pour produire un caractère de contrôle.
2 Même si le caractère de contrôle Null (\0
) n’est pas visible lors de l’impression, il s’agit d’un caractère distinct dans le fichier de données. En d'autres termes, utiliser ce caractère en tant qu'indicateur de fin de champ ou de fin de ligne ne revient pas à simplement omettre cet indicateur de fin.
Important
Si un caractère de fin se produit dans les données, le caractère est interprété comme un terminateur, et non comme des données, et les données après ce caractère sont interprétées comme appartenant au champ ou à l’enregistrement suivant. Par conséquent, choisissez vos indicateurs consciencieusement afin qu'ils n'apparaissent jamais au sein de vos données. Par exemple, un point de terminaison de champ de substitution faible n’est pas un bon choix pour un terminateur de champ si les données contiennent cette faible substitution.
Utiliser des terminateurs de ligne
L'indicateur de fin de ligne peut être le même que celui employé en tant qu'indicateur du dernier champ. Cependant, un indicateur de fin de ligne distinct s'avère généralement plus utile. Par exemple, pour produire une sortie tabulaire, terminez le dernier champ de chaque ligne avec le caractère de nouvelle ligne (\n
) et tous les autres champs avec le caractère tabulation (\t
). Pour placer chaque enregistrement de données sur sa propre ligne dans le fichier de données, spécifiez la combinaison \r\n
comme marque de fin de ligne.
Remarque
Lorsque vous utilisez bcp de manière interactive et spécifiez \n
(newline) comme marque de fin de ligne, bcp le préfixe automatiquement avec un \r
caractère (retour chariot), ce qui entraîne un fin de ligne de \r\n
.
Spécifier des indicateurs de fin pour l’exportation en bloc
Si vous procédez à une exportation en bloc des données de type char ou nchar , mais que vous voulez utiliser un indicateur de fin autre que celui défini par défaut, vous devez indiquer ce dernier à la commande bcp . Vous pouvez le spécifier de l'une des façons suivantes :
Grâce à un fichier de format précisant l'indicateur de fin pour chaque champ.
Remarque
Pour plus d’informations sur l’utilisation des fichiers de format, consultez Fichiers de format pour importer ou exporter des données (SQL Server).
Sans avoir recours à un fichier de format, les options suivantes sont aussi à votre disposition :
Utilisez le
-t
commutateur pour spécifier la marque de fin de champ pour tous les champs, à l’exception du dernier champ de la ligne et en utilisant le-r
commutateur pour spécifier un indicateur de fin de ligne.Utilisez un commutateur au format caractère (
-c
ou-w
) sans le-t
commutateur, qui définit le pointeur de fin de champ sur le caractère de tabulation.\t
Il s’agit de la même chose que la spécification-t\t
.Remarque
Si vous spécifiez le
-n
commutateur (données natives) ou-N
(Unicode native), les terminateurs ne sont pas insérés.Si une commande bcp interactive contient la ou
out
l’optionin
sans le commutateur de fichier de format (-f
) ou un commutateur de format de données (-n
, ,-c
-w
ou-N
) et que vous choisissez de ne pas spécifier la longueur du préfixe et la longueur du champ, la commande demande la fin de champ de chaque champ, avec une valeur par défaut :Enter field terminator [none]:
généralement, cette valeur par défaut convient. Toutefois, pour les champs de données char ou nchar, consultez la sous-section suivante : « Instructions pour l’utilisation de Terminators ». Pour obtenir un exemple montrant cette invite dans le contexte, consultez Spécifier les formats de données de compatibilité lors de l’utilisation de bcp (SQL Server).
Remarque
Après avoir indiqué de façon interactive tous les champs d’une commande bcp, cette dernière vous demande de sauvegarder vos réponses dans un fichier de format autre que XML pour chacun des champs fournis. Pour plus d’informations sur les fichiers de format non XML, consultez Utiliser des fichiers de format non XML (SQL Server).
Instructions relatives à l’utilisation de terminateurs
Dans certains cas, un indicateur de fin s'avère utile pour les champs de données de type char ou nchar . Par exemple :
Pour une colonne de données qui contient une valeur Null dans un fichier de données qui sera importé dans un programme qui ne comprend pas les informations de longueur de préfixe.
Toute colonne de données qui contient une valeur Null est considérée de longueur variable. En l'absence de longueurs de préfixe, un indicateur de fin est nécessaire pour identifier la fin d'un champ Null et garantir que les données sont correctement interprétées.
pour une longue colonne de longueur fixe dont l'espace n'est utilisé que partiellement par de nombreuses lignes.
Dans cette situation, la spécification d'un indicateur de fin réduit l'espace de stockage et permet au champ d'être traité comme un champ de longueur variable.
Spécifier \n
en tant que terminateur de ligne pour l’exportation en bloc
Lorsque vous spécifiez \n
comme indicateur de fin de ligne pour l’exportation en bloc ou utilisez implicitement l’indicateur de fin de ligne, le programme de copie en bloc sort une combinaison de renvoi de saut de ligne (CRLF) comme indicateur de fin de ligne. Si vous souhaitez générer un seul caractère de saut de ligne (LF) en tant qu’indicateur de fin de ligne, courante sur les ordinateurs Unix et Linux : utilisez la notation hexadécimale pour spécifier l’indicateur de fin de ligne LF. Par exemple :
bcp -r '0x0A'
Exemples
Cette commande d’exportation en bloc exporte les données de la table AdventureWorks2022.HumanResources.Department
vers le fichier de données Department-c-t.txt
au format de caractères, utilisant la virgule comme indicateur de fin de champ et le saut de ligne (\n) comme indicateur de fin de ligne.
La commande bcp contient les commutateurs suivants.
Interrupteur | Descriptif |
---|---|
-c |
Chargement des champs de données en tant que données sous forme de caractères. |
-t , |
Virgule (,) servant d'indicateur de fin de champ. |
-r \n |
Indicateur de fin de ligne en tant que caractère de saut de ligne. Il s’agit de l’indicateur de fin de ligne par défaut, de sorte qu’il est facultatif. |
-T |
Spécifie que l'utilitaire bcp se connecte à SQL Server avec une connexion approuvée qui utilise la sécurité intégrée. Si -T ce n’est pas spécifié, vous devez spécifier -U et -P vous connecter avec succès. |
Pour plus d’informations, consultez bcp Utility.
À l’invite de commandes Windows Microsoft, entrez :
bcp AdventureWorks2022.HumanResources.Department out C:\myDepartment-c-t.txt -c -t, -r \n -T
Ceci entraîne la création de Department-c-t.txt
contenant 16 enregistrements de 4 champs chacun. Les champs sont séparés par une virgule.
Spécifier des indicateurs de fin pour l’importation en bloc
Quand vous procédez à une importation en bloc de données de type char ou nchar , la commande prévue à cet effet doit reconnaître les indicateurs de fin utilisés dans le fichier de données. Voici comment les indicateurs de fin doivent être précisés selon la commande d'importation en bloc :
Bcp
Spécifier des terminateurs pour une opération d'importation revient à utiliser la même syntaxe que pour une opération d'exportation. Pour plus d’informations, consultez Spécifier les terminateurs pour l’exportation en bloc, plus haut dans cet article.
BULK INSERT
Les indicateurs de fin peuvent être spécifiés pour des champs individuels dans un fichier de format ou pour l’ensemble du fichier de données, à l’aide des qualificateurs indiqués dans le tableau suivant.
Qualificateur Descriptif FIELDTERMINATOR = '<field_terminator>'
Spécifie l'indicateur de fin de champ à utiliser pour les fichiers de données de type caractère et de type caractère Unicode.
La valeur par défaut est\t
(caractère tabulation).ROWTERMINATOR = '<row_terminator>'
Spécifie l'indicateur de fin de ligne à utiliser pour les fichiers de données de type caractère et de type caractère Unicode.
La valeur par défaut est\n
(caractère newline).Pour plus d’informations, consultez BULK INSERT.
INSERT ... SELECT * FROM OPENROWSET(BULK...)
Pour le
OPENROWSET
fournisseur d’ensembles de lignes en bloc, les indicateurs de fin peuvent être spécifiés uniquement dans le fichier de format (ce qui est requis à l’exception des types de données volumineux). Si un fichier de données de type caractère utilise un indicateur de fin qui ne soit pas un indicateur par défaut, ce dernier doit alors être défini dans le fichier de format. Pour plus d’informations, consultez Créer un fichier de format (SQL Server) et Utiliser un fichier de format pour importer des données en bloc (SQL Server).Pour plus d’informations sur la
OPENROWSET BULK
clause, consultez OPENROWSET (BULK).
Spécifier \n
en tant que terminateur de ligne pour l’importation en bloc
Lorsque vous spécifiez \n
comme marque de fin de ligne pour l’importation en bloc, ou utilisez implicitement l’indicateur de fin de ligne par défaut, bcp et l’instruction BULK INSERT
attendent une combinaison de flux de retour chariot (CRLF) en tant que terminateur de ligne. Si votre fichier source utilise un caractère de flux de ligne uniquement (LF) comme marque de fin de ligne, comme c’est le cas dans les fichiers générés sur les ordinateurs Unix et Linux, utilisez la notation hexadécimale pour spécifier le pointeur de fin de ligne LF. Par exemple, dans une BULK INSERT
instruction :
ROWTERMINATOR = '0x0A'
Exemples
Les exemples de cette section importent en bloc des données de type caractère du fichier de données Department-c-t.txt
créé dans l'exemple précédent dans la table myDepartment
se trouvant dans l'exemple de base de données AdventureWorks2022
. Avant de commencer, vous devez créer cette base de données. Pour créer cette table sous le dbo
schéma, dans l’Éditeur de requête SQL Server Management Studio, exécutez le code suivant :
USE AdventureWorks2022;
GO
DROP TABLE myDepartment;
CREATE TABLE myDepartment
(
DepartmentID SMALLINT,
Name NVARCHAR (50),
GroupName NVARCHAR (50) NULL,
ModifiedDate DATETIME CONSTRAINT
DF_AddressType_ModifiedDate DEFAULT (GETDATE()) NOT NULL
);
GO
R : Utilisation de bcp pour spécifier de façon interactive les indicateurs
L'exemple suivant importe en bloc le fichier de données Department-c-t.txt
par le biais de la commande bcp
. Les commutateurs de cette commande sont identiques à ceux de la commande d'exportation en bloc. Pour plus d’informations, consultez Spécifier les terminateurs pour l’exportation en bloc, plus haut dans cet article.
À l’invite de commandes Windows, tapez la commande suivante :
bcp AdventureWorks2022.dbo.myDepartment in C:\myDepartment-c-t.txt -c -t , -r \n -T
B. Utilisation de BULK INSERT pour spécifier de façon interactive les terminateurs
L'exemple suivant importe en bloc le fichier de données Department-c-t.txt
par le biais de l'instruction BULK INSERT
en utilisant les qualificateurs répertoriés dans le tableau suivant.
Choix | Attribut |
---|---|
DATAFILETYPE = 'char' |
Chargement des champs de données en tant que données sous forme de caractères. |
FIELDTERMINATOR = ',' |
Virgule (, ) servant d'indicateur de fin de champ. |
ROWTERMINATOR = '\n' |
Indicateur de fin de ligne en tant que caractère de saut de ligne. |
Dans une fenêtre de requête SQL Server Management Studio, exécutez la requête suivante :
USE AdventureWorks2022;
GO
BULK INSERT myDepartment FROM 'C:\myDepartment-c-t.txt'
WITH (
DATAFILETYPE = 'char',
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
);
GO