Utilisation du format caractère Unicode pour importer ou exporter des données

Le format caractère Unicode est recommandé pour le transfert en bloc de données entre plusieurs instances de MicrosoftSQL Server à l'aide d'un fichier de données qui contient des caractères étendus ou DBCS. Le format de données caractère Unicode permet d'exporter des données depuis un serveur à l'aide d'une page de codes différente de celle utilisée par le client qui effectue l'opération. Dans ces cas, l'utilisation du format caractère Unicode présente les avantages suivants :

  • Si les données sources et de destination sont de types de données Unicode, l'utilisation du format caractère Unicode conserve toutes les données caractère.

  • Si les données sources et de destination ne sont pas de types de données Unicode, l'utilisation du format caractère Unicode réduit au minimum la perte de caractères étendus dans les données sources qui ne peuvent pas être représentées sur la destination.

Les fichiers de données de format caractère Unicode respectent les conventions pour les fichiers Unicode. Les deux premiers octets du fichier sont des nombres hexadécimaux (0xFFFE). Ces octets sont utilisés comme indicateurs de l'ordre des octets, précisant si l'octet de poids fort est enregistré en premier ou en dernier dans le fichier.

Important

Pour qu'un fichier de format fonctionne avec un fichier de données de caractères Unicode, tous les champs d'entrée doivent être des chaînes de texte Unicode (autrement dit, des chaînes Unicode de taille fixe ou terminées par un caractère).

Les données sql_variant stockées dans un fichier de données de format caractère Unicode fonctionnent comme dans un fichier de données de format caractère, à la différence que les données sont stockées en tant que données nchar et non pas char. Pour plus d'informations sur le format caractère, consultez Utilisation du format caractère pour importer ou exporter des données

Pour utiliser un indicateur de fin de champ ou de ligne autre que l'indicateur par défaut du format caractère Unicode, consultez Spécification des indicateurs de fin de champ et de fin de ligne.

Options de commande du format caractère Unicode

Vous pouvez importer des données de format caractère Unicode dans une table à l'aide de la commande bcp ou des instructions BULK INSERT ou INSERT ... SELECT * FROM OPENROWSET(BULK...). Pour une commande bcp ou une instruction BULK INSERT, vous pouvez spécifier le format de données dans la ligne de commande. Pour une instruction INSERT ... SELECT * FROM OPENROWSET(BULK...), vous devez spécifier le format de données dans un fichier de format.

Le format caractère Unicode est pris en charge par les options de ligne de commande suivantes :

Commande

Option

Description

bcp

-w

Utilise le format caractère Unicode.

BULK INSERT

DATAFILETYPE ='widechar'

Utilise le format caractère Unicode lors de l'importation de données en bloc.

Pour plus d'informations, consultez Utilitaire bcp, BULK INSERT (Transact-SQL) ou OPENROWSET (Transact-SQL).

[!REMARQUE]

Vous pouvez également spécifier la mise en forme champ par champ dans un fichier de format. Pour plus d'informations, consultez Fichiers de format pour l'importation ou l'exportation de données.

Exemples

Les exemples suivants montrent comment exporter en bloc des données de caractères Unicode à l'aide de la commande bcp et importer en bloc les mêmes données à l'aide de l'instruction BULK INSERT.

Exemple de table

Une table nommée myTestUniCharData doit être créée dans l'exemple de base de données AdventureWorks sous le schéma dbo. Avant d'exécuter les exemples, vous devez créer cette table. Pour créer cette table, dans l'éditeur de requêtes SQL Server Management Studio, exécutez le code suivant :

USE AdventureWorks;
GO
CREATE TABLE myTestUniCharData (
   Col1 smallint,
   Col2 nvarchar(50),
   Col3 nvarchar(50)
   ); 

Pour remplir cette table et visualiser le contenu obtenu, exécutez les instructions suivantes :

INSERT INTO myTestUniCharData(Col1,Col2,Col3)
   VALUES(1,'DataField2','DataField3');
INSERT INTO myTestUniCharData(Col1,Col2,Col3)
   VALUES(2,'DataField2','DataField3');
GO
SELECT Col1,Col2,Col3 FROM myTestUniCharData

Utilisation de la commande bcp pour exporter en bloc des données caractère Unicode

Pour exporter des données depuis la table vers le fichier de données, utilisez la commande bcp avec l'option out et les qualificateurs suivants :

Qualificateurs

Description

-w

Spécifie le format caractère Unicode.

-t,

Spécifie une virgule (,) comme indicateur de fin de champ.

RemarqueRemarque
L'indicateur de fin de champ par défaut est le caractère Unicode de tabulation (\t). Pour plus d'informations, consultez Spécification des indicateurs de fin de champ et de fin de ligne.

-T

Connexion de l'utilitaire bcp à SQL Server par le biais d'une connexion fiable à sécurité intégrée. Si le qualificateur -T n'est pas spécifié, vous devez indiquer -U et -P pour établir la connexion.

L'exemple suivant exporte en bloc des données au format de caractères Unicode à partir de la table myTestUniCharData dans un nouveau fichier de données nommé myTestUniCharData-w.Dat qui utilise la virgule (,) comme marque de fin de champ. À l'invite de commandes Microsoft Windows, entrez :

bcp AdventureWorks..myTestUniCharData out C:\myTestUniCharData-w.Dat -w -t, -T

Utilisation de l'instruction BULK INSERT pour importer en bloc des données caractère Unicode

Dans l'exemple ci-dessous, l'instruction BULK INSERT est employée pour importer les données du fichier de données myTestUniCharData-w.Dat dans la table myTestUniCharData. La marque de fin de champ autre que celle par défaut (,) doit être déclarée dans l'instruction. Dans l'éditeur de requêtes de SQL Server Management Studio, exécutez le code suivant :

USE AdventureWorks;
GO
BULK INSERT myTestUniCharData 
   FROM 'C:\myTestUniCharData-w.Dat' 
   WITH (
      DATAFILETYPE='widechar',
      FIELDTERMINATOR=','
   ); 
GO
SELECT Col1,Col2,Col3 FROM myTestUniCharData;
GO