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

Le format natif Unicode est utile quand vous devez copier des informations d’une installation de Microsoft SQL Server vers une autre. L'utilisation du format natif pour les données qui ne sont pas de type caractère (char) permet de gagner du temps, puisque vous supprimez les conversions inutiles des types de données depuis et vers le format caractère. L'utilisation du format caractère Unicode pour toutes les données de type caractère évite la perte des caractères étendus lorsque vous transférez en bloc des données entre des serveurs utilisant des pages de codes différentes. Un fichier de données au format natif Unicode peut être lu par toutes les méthodes d'importation en bloc.

Le format natif Unicode est recommandé pour le transfert en bloc des données entre plusieurs instances de SQL Server par le biais d'un fichier de données qui contient des caractères étendus ou des caractères codés sur deux octets (DBCS). Pour les données qui ne sont pas de type caractère, le format natif Unicode utilise des types de données (bases de données) natifs. Pour les données de type caractère (par exemple char, nchar, varchar, nvarchar, text, varchar(max), nvarchar(max) et ntext), le format natif Unicode utilise le format de données de type caractère Unicode.

Les données sql_variant qui sont stockées en tant que SQLVARIANT dans un fichier de données au format natif Unicode fonctionnent de la même manière que le fichier de données au format natif, sauf que les valeurs char et varchar sont converties en nchar et nvarchar, ce qui double l'espace de stockage nécessaire pour les colonnes affectées. Les métadonnées d'origine sont conservées, et les valeurs sont reconverties en leur type de données char et varchar d'origine lorsqu'elles sont importées en bloc dans une colonne de table.

Options de commande pour le format natif Unicode

Vous pouvez importer des données au format natif Unicode dans une table à l’aide de bcp, BULK INSERT ou INSERT ... SELECT * FROM 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 natif Unicode est reconnu par les options suivantes :

Commande Option Description
bcp -N Oblige l’utilitaire bcp à utiliser le format natif Unicode, qui utilise les types de données natifs (base de données) pour toutes les données non caractéristiques et le format de données caractères Unicode pour toutes les données caractère (char, nchar, varcharnvarchar, text, et ntext).
BULK INSERT DATAFILETYPE ='widenative' Utilisez le format natif Unicode lorsque vous importez en bloc des données.

Pour plus d’informations, consultez Utilitaire bcp, 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 ci-après indiquent comment exporter en bloc des données au format natif par le biais de bcp , et importer en bloc ces mêmes données à l’aide de BULK INSERT.

Exemple de table

Les exemples utilisent une table nommée myTestUniNativeData, qui doit être créée dans l’exemple de base de données AdventureWorks sous le schéma dbo. Avant de commencer, vous devez créer cette base de données. Dans SQL Server Management Studio Éditeur de requête, exécutez :

USE AdventureWorks;  
GO  
CREATE TABLE myTestUniNativeData (  
   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 myTestUniNativeData(Col1,Col2,Col3)  
   VALUES(1,'DataField2','DataField3');  
INSERT INTO myTestUniNativeData(Col1,Col2,Col3)  
   VALUES(2,'DataField2','DataField3');  
GO  
SELECT Col1,Col2,Col3 FROM myTestUniNativeData  
  

Utilisation de l'utilitaire bcp pour exporter en bloc des données au format natif

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
-N Spécifie les types de données natifs.
-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.

Dans l'exemple suivant, des données sont exportées en bloc au format natif de la table myTestUniNativeData vers un nouveau fichier de données nommé myTestUniNativeData-N.Dat. À l’invite de commandes Windows Microsoft , entrez :

bcp AdventureWorks..myTestUniNativeData out C:\myTestUniNativeData-N.Dat -N -T  
  

Utilisation de BULK INSERT pour importer en bloc des données au format natif

L'exemple suivant utilise l'instruction BULK INSERT pour importer les données du fichier de données myTestUniNativeData-N.Dat dans la table myTestUniNativeData. Dans SQL Server Management Studio Éditeur de requête, exécutez :

USE AdventureWorks;  
GO  
BULK INSERT myTestUniNativeData   
    FROM 'C:\myTestUniNativeData-N.Dat'   
   WITH (DATAFILETYPE='widenative');   
GO  
SELECT Col1,Col2,Col3 FROM myTestUniNativeData;  
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)