Utiliser le format caractère Unicode pour importer ou exporter des données (SQL Server)

Le format caractère Unicode est recommandé pour le transfert en bloc de données entre plusieurs instances de SQL 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 Prise en charge d’Unicode et du classement.

Pour utiliser un paramètre de fin de champ ou de ligne autre que la valeur par défaut fournie avec le format de caractères Unicode, consultez Spécifier des terminateurs de champ et de ligne (SQL Server).

Options de commande du format caractère Unicode

Vous pouvez importer des données au format caractère Unicode dans une table à l’aide de bcp, BULK INSERT ou INSERT ... SÉLECTIONNEZ * DANS OPENROWSET (BULK...). Pour une commande bcp ou une instruction BULK INSERT, vous pouvez spécifier le format des données sur 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 bcp Utility, BULK INSERT (Transact-SQL) ou OPENROWSET (Transact-SQL).

Notes

Vous pouvez également spécifier le formatage par champ dans un fichier de format. Pour plus d’informations, consultez Fichiers de format pour l’importation ou l’exportation de données (SQL Server).

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

Les exemples nécessitent la création d’une table nommée myTestUniCharData table dans l’exemple de base de données AdventureWorks2012 sous le dbo schéma. Avant de commencer, vous devez créer cette base de données. Pour créer cette table, dans SQL Server Management Studio Éditeur de requête, exécutez :

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

Pour remplir cette table et afficher le contenu résultant, exécutez les instructions suivantes :

INSERT INTO myTestUniCharData(Col1,Col2,Col3)  
   VALUES(1,'DataField2','DataField3')   
        ,(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 de la table vers le fichier de données, utilisez bcp avec l’option out et les qualificateurs suivants :

Qualificateurs Description
-w Spécifie le format caractère Unicode.
-t, Virgule (,) servant d'indicateur de fin de champ.

Remarque : Le paramètre de fin de champ par défaut est le caractère Unicode de l’onglet (\t). Pour plus d’informations, consultez Spécifier des indicateurs de fin de champ et de fin de ligne (SQL Server).
-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 n’est pas spécifié, vous devez indiquer -U et -P pour vous connecter.

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 Windows Microsoft , entrez :

bcp AdventureWorks2012..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 SQL Server Management Studio Éditeur de requête, exécutez :

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

Tâches associées

Pour utiliser des formats de données pour l'importation ou l'exportation en bloc

Voir aussi

Utilitaire bcp
BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL)
Types de données (Transact-SQL)
Prise en charge d'Unicode et du classement