Utilisation du format natif Unicode pour importer ou exporter des données

Le format natif Unicode est utile lorsque vous devez copier des informations depuis une installation de MicrosoftSQL Server dans 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.

[!REMARQUE]

Pour plus d'informations sur les formats natifs, consultez Utilisation du format natif pour importer ou exporter des données.

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 des données dans un fichier de format.

Le format natif Unicode est reconnu par les options suivantes :

Commande

Option

Description

bcp

-N

Amène l'utilitaire bcp à utiliser le format natif Unicode, qui utilise des types de données (bases de données) natifs pour toutes les données qui ne sont pas de type caractère, et le format de données de type caractère Unicode pour toutes les données de type caractère (char, nchar, varchar, nvarchar, 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).

[!REMARQUE]

Vous avez également la possibilité de spécifier la mise en forme au niveau de chaque 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 indiquent comment exporter en bloc des données natives à l'aide de bcp, puis comment 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. Vous devez créer cette table avant d'exécuter les exemples. Dans l'éditeur de requête de SQL Server Management Studio, exécutez :

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

Pour remplir cette table et visualiser le contenu généré, 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 bcp pour exporter en bloc des données natives

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 via une connexion approuvée utilisant la sécurité intégrée. Si -T n'est pas spécifié, vous devez spécifier -U et -P pour être en mesure de vous connecter.

L'exemple suivant exporte en bloc des données au format natif de myTestUniNativeData dans un nouveau fichier de données nommé myTestUniNativeData-N.Dat. À l'invite de commandes Microsoft Windows, entrez :

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

Utilisation de BULK INSERT pour importer en bloc des données natives

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

USE AdventureWorks;
GO
BULK INSERT myTestUniNativeData 
    FROM 'C:\myTestUniNativeData-N.Dat' 
   WITH (DATAFILETYPE='widenative'); 
GO
SELECT Col1,Col2,Col3 FROM myTestUniNativeData;
GO