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

Le format caractère est recommandé pour l'exportation en bloc de données dans un fichier texte qui doit être utilisé dans un autre programme, ou pour l'importation en bloc de données à partir d'un fichier texte généré par un autre programme.

[!REMARQUE]

Lors du transfert en bloc de données entre des instances de MicrosoftSQL Server, si le fichier de données contient des données de caractères Unicode mais aucun caractère étendu ou DBCS, utilisez le format de caractères Unicode. Pour plus d'informations, consultez Utilisation du format caractère Unicode pour importer ou exporter des données.

Le format caractère utilise le format de données de caractères pour toutes les colonnes. L'enregistrement d'informations au format caractère est utile lorsque les données sont exploitées par un autre programme, par exemple un tableur, ou lorsque les données doivent être copiées dans une instance de SQL Server à partir d'une base de données issue d'un autre éditeur comme Oracle.

Considérations relatives à l'utilisation du format caractère

Lors de l'utilisation du format caractère, tenez compte des points suivants :

  • Par défaut, l'utilitaire bcp sépare les champs de données de caractères par le caractère de tabulation et termine les enregistrements par un caractère de nouvelle ligne. Pour plus d'informations sur la définition d'autres marques de fin, consultez Spécification des indicateurs de fin de champ et de fin de ligne.

  • Par défaut, avant l'exportation ou l'importation en bloc de données en mode caractère, les conversions suivantes sont réalisées :

    Sens de l'opération en bloc

    Conversion

    Exporter

    Convertit les données en représentation caractère. Si la demande est faite explicitement, les données sont converties vers la page de codes demandée pour les colonnes de caractères. Si aucune page de codes n'est spécifiée, les données de caractères sont converties à l'aide de la page de codes OEM de l'ordinateur client.

    Importation

    Convertit les données de caractères en représentation native si nécessaire, puis traduit les données de caractères de la page de codes du client vers la page de codes des colonnes cibles.

  • Pour éviter la perte de caractères étendus pendant la conversion, utilisez le format de caractères Unicode ou spécifiez une page de codes. Pour plus d'informations sur l'utilisation d'une page de codes, consultez Copie de données entre différents classements.

  • Les données sql_variant stockées dans un fichier au format caractère sont enregistrées sans métadonnées. Chaque valeur de données est convertie au format char suivant les règles de conversion implicite des données. Importées dans une colonne sql_variant, les données sont importées au format char. Importées dans une colonne dont le type de données est différent de sql_variant, les données sont converties à partir du format char à l'aide de la conversion implicite. Pour plus d'informations sur la conversion des données, consultez Conversion de types de données (moteur de base de données).

  • L'utilitaire bcp exporte les valeurs de type money sous forme de fichiers de données au format caractère, avec quatre chiffres après le séparateur décimal et sans symboles de groupement de chiffres comme les espaces de séparation. Par exemple, une colonne money contenant la valeur 1 234 567,123456 est exportée en bloc dans un fichier en tant que chaîne de caractères 1234567,1235.

Options de commande pour le format caractère

Vous pouvez importer des données au format caractère dans une table à l'aide de l'utilitaire bcp, 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 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 est pris en charge par les options de ligne de commande suivantes :

Commande

Option

Description

bcp

-c

Impose à l'utilitaire bcp d'utiliser les données de caractères.1

BULK INSERT

DATAFILETYPE ='char'

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

1 Pour charger les données de caractères (-c) dans un format compatible avec les versions antérieures des clients SQL Server, utilisez le commutateur -V. Pour plus d'informations, consultez Importation de données au format natif et caractère à partir de versions antérieures de SQL Server.

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

[!REMARQUE]

D'une autre manière, vous pouvez spécifier le format pour 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 montrent comment exporter en bloc des données de caractères à l'aide de l'utilitaire bcp et comment 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 myTestCharData dans l'exemple de base de données AdventureWorks d'après le schéma dbo. Avant d'exécuter les exemples, vous devez créer cette table. Pour ce faire, dans l'éditeur de requête SQL SQL Server Management Studio, exécutez le code suivant :

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

Utilisation de bcp pour exporter en bloc des données de caractères

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

Qualificateurs

Description

-c

Spécifie le format caractère.

-t,

Spécifie la virgule (,) comme marque de fin de champ.

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

-T

Spécifie que l'utilitaire bcp se connecte à SQL Server avec une connexion approuvée utilisant 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 les données au format caractère de la table myTestCharData dans un nouveau fichier de données nommé myTestCharData-c.Dat, qui utilise la virgule (,) comme marque de fin de champ. À l'invite de commandes Microsoft Windows, entrez :

bcp AdventureWorks..myTestCharData out C:\myTestCharData-c.Dat -c -t, -T

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

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

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