Utiliser le format caractère pour importer ou exporter des données (SQL Server)Use Character Format to Import or Export Data (SQL Server)

Cette rubrique s’applique à : OuiSQL ServerOuibase de données SQL AzureOuiAzure SQL Data Warehouse Oui Parallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL ServeryesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

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.Character format is recommended when you bulk export data to a text file that is to be used in another program or when you bulk import data from a text file that is generated by another program.

Le format caractère utilise le format de données de caractères pour toutes les colonnes.Character format uses the character data format for all columns. 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 ServerSQL Server à partir d'une base de données issue d'un autre éditeur comme Oracle.Storing information in character format is useful when the data is used with another program, such as a spreadsheet, or when the data needs to be copied into an instance of SQL ServerSQL Server from another database vendor such as Oracle.

Note

Lors du transfert en bloc de données entre des instances de MicrosoftMicrosoft SQL ServerSQL Server , si le fichier de données contient des données caractères Unicode mais aucun caractère étendu ni jeu de caractères codés sur deux octets (DBCS), utilisez le format de caractères Unicode.When you bulk transfer data between instances of MicrosoftMicrosoft SQL ServerSQL Server and the data file contains Unicode character data but not any extended or DBCS characters, use the Unicode character format. Pour plus d’informations, consultez Utiliser le format caractère Unicode pour importer ou exporter des données (SQL Server).For more information, see Use Unicode Character Format to Import or Export Data (SQL Server).

Dans cette rubrique :In this Topic:
Considérations relatives à l'utilisation du format caractèreConsiderations for Using Character Format
Options de commande pour le format caractèreCommand Options for Character Format
Exemples de conditions de testExample Test Conditions
 ● Exemple de table ● Sample Table
 ● Exemple de fichier de format non XML ● Sample Non-XML Format File
ExemplesExamples
 ● Utilisation de bcp et du format caractère pour exporter des données ● Using bcp and Character Format to Export Data
 ● Utilisation de bcp et du format caractère pour importer des données sans un fichier de format ● Using bcp and Character Format to Import Data without a Format File
 ● Utilisation de bcp et du format caractère pour importer des données avec un fichier de format non XML ● Using bcp and Character Format to Import Data with a Non-XML Format File
 ● Utilisation de BULK INSERT et du format caractère sans un fichier de format ● Using BULK INSERT and Character Format without a Format File
 ● Utilisation de BULK INSERT et du format caractère avec un fichier de format non XML ● Using BULK INSERT and Character Format with a Non-XML Format File
 ● Utilisation d’OPENROWSET et du format caractère avec un fichier de format non XML ● Using OPENROWSET and Character Format with a Non-XML Format File
Tâches associéesRelated Tasks

Considérations relatives à l'utilisation du format caractèreConsiderations for Using Character Format

Lors de l'utilisation du format caractère, tenez compte des points suivants :When using character format, consider the following:

  • 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.By default, the bcp utility separates the character-data fields with the tab character and terminates the records with the newline character. Pour plus d’informations sur la spécification des terminateurs de remplacement, consultez Spécifier des indicateurs de fin de champ et de fin de ligne (SQL Server).For information about how to specify alternative terminators, see Specify Field and Row Terminators (SQL Server).

  • 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 :By default, before the bulk export or import of character-mode data, the following conversions are performed:

    Sens de l'opération en blocDirection of bulk operation ConversionConversion
    ExporterExport Convertit les données en représentation caractère.Converts data to character representation. Si la demande est faite explicitement, les données sont converties vers la page de codes demandée pour les colonnes de caractères.If explicitly requested, the data is converted to the requested code page for character columns. 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.If no code page is specified, the character data is converted by using the OEM code page of the client computer.
    ImporterImport 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.Converts character data to native representation, when necessary, and translates the character data from the client's code page to the code page of the target column(s).
  • 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.To prevent loss of extended characters during conversion, either use Unicode character format or specify a code page.

  • Les données sql_variant stockées dans un fichier au format caractère sont enregistrées sans métadonnées.Any sql_variant data that is stored in a character-format file is stored without metadata. Chaque valeur de données est convertie au format char suivant les règles de conversion implicite des données.Each data value is converted to char format, according to the rules of implicit data conversion. Importées dans une colonne sql_variant , les données sont importées au format char.When imported into a sql_variant column, the data is imported as 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.When imported into a column with a data type other than sql_variant, the data is converted from char by using implicit conversion. Pour plus d’informations sur la conversion de données, consultez Conversion de types de données (moteur de base de données).For more information about data conversion, see Data Type Conversion (Database Engine).

  • 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.The bcp utility exports money values as character-format data files with four digits after the decimal point and without any digit-grouping symbols such as comma separators. Par exemple, une colonne money contenant la valeur 1 234 567,123456 est exportée en bloc dans un fichier de données en tant que chaîne de caractères 1234567,1235.For example, a money column that contains the value 1,234,567.123456 is bulk exported to a data file as the character string 1234567.1235.

Options de commande pour le format caractèreCommand Options for Character Format

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...). Si vous utilisez une commande bcp ou une instruction BULK INSERT, vous pouvez spécifier le format de données dans l’instruction.You can import character format data into a table using bcp, BULK INSERT or INSERT ... SELECT * FROM OPENROWSET(BULK...). For a bcp command or BULK INSERT statement, you can specify the data format in the statement. Pour une instruction INSERT... SELECT * FROM OPENROWSET(BULK...), vous devez spécifier le format de données dans un fichier de format.For an INSERT ... SELECT * FROM OPENROWSET(BULK...) statement, you must specify the data format in a format file.

Le format caractère est pris en charge par les options de commande suivantes :Character format is supported by the following command options:

CommandCommand OptionOption DescriptionDescription
bcpbcp -c-c Force l’utilitaire bcp à utiliser les données de type caractère.*Causes the bcp utility to use character data.*
BULK INSERTBULK INSERT DATAFILETYPE ='char'DATAFILETYPE ='char' Utilise le format caractère lors de l'importation en bloc des données.Use character format when bulk importing data.
OPENROWSETOPENROWSET NéantN/A Doit utiliser un fichier de format.Must use a format file

*Pour charger les données caractères (-c) dans un format compatible avec les versions antérieures des clients SQL ServerSQL Server , utilisez le commutateur -V .*To load character (-c) data to a format compatible with earlier versions of SQL ServerSQL Server clients, use the -V switch. Pour plus d’informations, consultez Importer des données au format natif et caractère à partir de versions antérieures de SQL Server.For more information, see Import Native and Character Format Data from Earlier Versions of SQL Server.

Note

Vous pouvez également spécifier le formatage par champ dans un fichier de format.Alternatively, you can specify formatting on a per-field basis in a format file. Pour plus d’informations, consultez Fichiers de format pour l’importation ou l’exportation de données (SQL Server).For more information, see Format Files for Importing or Exporting Data (SQL Server).

Exemples de conditions de testExample Test Conditions

Les exemples de cette rubrique sont fondés sur la table et le fichier de format définis ci-dessous.The examples in this topic are based on the table, and format file defined below.

Exemple de tableSample Table

Le script ci-dessous crée une base de données test, une table nommée myChar et remplit la table avec des valeurs initiales.The script below creates a test database, a table named myChar and populates the table with some initial values. Exécutez l’instruction Transact-SQL suivante dans Microsoft SQL Server Management StudioSQL Server Management Studio (SSMS) :Execute the following Transact-SQL in Microsoft SQL Server Management StudioSQL Server Management Studio (SSMS):

CREATE DATABASE TestDatabase;
GO

USE TestDatabase;
CREATE TABLE dbo.myChar ( 
   PersonID smallint NOT NULL,
   FirstName varchar(25) NOT NULL,
   LastName varchar(30) NOT NULL,
   BirthDate date,
   AnnualSalary money
   );

-- Populate table
INSERT TestDatabase.dbo.myChar
VALUES 
(1, 'Anthony', 'Grosse', '1980-02-23', 65000.00),
(2, 'Alica', 'Fatnowna', '1963-11-14', 45000.00),
(3, 'Stella', 'Rossenhain', '1992-03-02', 120000.00);

-- Review Data
SELECT * FROM TestDatabase.dbo.myChar;

Exemple de fichier de format non XMLSample Non-XML Format File

SQL Server prend en charge deux types de fichier de format : format XML et format non XML.SQL Server support two types of format file: non-XML format and XML format. Le format non XML est le format d’origine pris en charge dans les versions précédentes de SQL Server.The non-XML format is the original format that is supported by earlier versions of SQL Server. Veuillez consulter Fichiers de format non XML (SQL Server) pour obtenir des informations détaillées.Please review Non-XML Format Files (SQL Server) for detailed information. La commande suivante utilise l’utilitaire bcp pour générer un fichier de format non xml myChar.fmtbasé sur le schéma de myChar.The following command will use the bcp utility to generate a non-xml format file, myChar.fmt, based on the schema of myChar. Pour utiliser une commande bcp pour créer un fichier de format, spécifiez l’argument format et utilisez nul à la place d’un chemin de fichier de données.To use a bcp command to create a format file, specify the format argument and use nul instead of a data-file path. L’option format nécessite également l’option -f .The format option also requires the -f option. De plus, pour cet exemple, le qualificateur c est utilisé pour spécifier les données de type caractère et T est utilisé pour spécifier une connexion approuvée à l’aide de la sécurité intégrée.In addition, for this example, the qualifier c is used to specify character data, and T is used to specify a trusted connection using integrated security. À partir d'une invite de commandes, entrez la commande suivante :At a command prompt, enter the following command:

bcp TestDatabase.dbo.myChar format nul -f D:\BCP\myChar.fmt -T -c 

REM Review file
Notepad D:\BCP\myChar.fmt

Important

Vérifiez que votre fichier de format non XML se termine par un retour charriot\saut de ligne.Ensure your non-XML format file ends with a carriage return\line feed. Sinon, vous recevez probablement le message d’erreur suivant :Otherwise you will likely receive the following error message:

SQLState = S1000, NativeError = 0
Error = [Microsoft][ODBC Driver 13 for SQL Server]I/O error while reading BCP format file

ExemplesExamples

Les exemples ci-dessous utilisent la base de données et les fichiers de format créés ci-dessus.The examples below use the database, and format files created above.

Utilisation de bcp et du format caractère pour exporter des donnéesUsing bcp and Character Format to Export Data

Commutateur-c et commande OUT .-c switch and OUT command. Remarque : Le fichier de données créé dans cet exemple est utilisé dans tous les exemples suivants.Note: the data file created in this example will be used in all subsequent examples. À partir d'une invite de commandes, entrez la commande suivante :At a command prompt, enter the following command:

bcp TestDatabase.dbo.myChar OUT D:\BCP\myChar.bcp -T -c

REM Review results
NOTEPAD D:\BCP\myChar.bcp

Utilisation de bcp et du format caractère pour importer des données sans un fichier de formatUsing bcp and Character Format to Import Data without a Format File

Commutateur-c et commande IN .-c switch and IN command. À partir d'une invite de commandes, entrez la commande suivante :At a command prompt, enter the following command:

REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myChar;"

REM Import data
bcp TestDatabase.dbo.myChar IN D:\BCP\myChar.bcp -T -c

REM Review results
SQLCMD -Q "SELECT * FROM TestDatabase.dbo.myChar;"

Utilisation de bcp et du format caractère pour importer des données avec un fichier de format non XMLUsing bcp and Character Format to Import Data with a Non-XML Format File

Commutateurs-c et -f switches et IN commet.-c and -f switches and IN command. À partir d'une invite de commandes, entrez la commande suivante :At a command prompt, enter the following command:

REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myChar;"

REM Import data
bcp TestDatabase.dbo.myChar IN D:\BCP\myChar.bcp -f D:\BCP\myChar.fmt -T

REM Review results
SQLCMD -Q "SELECT * FROM TestDatabase.dbo.myChar;"

Utilisation de BULK INSERT et du format caractère sans un fichier de formatUsing BULK INSERT and Character Format without a Format File

ArgumentDATAFILETYPE .DATAFILETYPE argument. Exécutez l’instruction Transact-SQL suivante dans Microsoft SQL Server Management StudioSQL Server Management Studio (SSMS) :Execute the following Transact-SQL in Microsoft SQL Server Management StudioSQL Server Management Studio (SSMS):

TRUNCATE TABLE TestDatabase.dbo.myChar; -- for testing
BULK INSERT TestDatabase.dbo.myChar
    FROM 'D:\BCP\myChar.bcp'
    WITH (
        DATAFILETYPE = 'Char'
        );

-- review results
SELECT * FROM TestDatabase.dbo.myChar;

Utilisation de BULK INSERT et du format caractère avec un fichier de format non XMLUsing BULK INSERT and Character Format with a Non-XML Format File

ArgumentFORMATFILE .FORMATFILE argument. Exécutez l’instruction Transact-SQL suivante dans Microsoft SQL Server Management StudioSQL Server Management Studio (SSMS) :Execute the following Transact-SQL in Microsoft SQL Server Management StudioSQL Server Management Studio (SSMS):

TRUNCATE TABLE TestDatabase.dbo.myChar; -- for testing
BULK INSERT TestDatabase.dbo.myChar
   FROM 'D:\BCP\myChar.bcp'
   WITH (
        FORMATFILE = 'D:\BCP\myChar.fmt'
        );

-- review results
SELECT * FROM TestDatabase.dbo.myChar;

Utilisation d’OPENROWSET et du format caractère avec un fichier de format non XMLUsing OPENROWSET and Character Format with a Non-XML Format File

ArgumentFORMATFILE .FORMATFILE argument. Exécutez l’instruction Transact-SQL suivante dans Microsoft SQL Server Management StudioSQL Server Management Studio (SSMS) :Execute the following Transact-SQL in Microsoft SQL Server Management StudioSQL Server Management Studio (SSMS):

TRUNCATE TABLE TestDatabase.dbo.myChar;  -- for testing
INSERT INTO TestDatabase.dbo.myChar
    SELECT *
    FROM OPENROWSET (
        BULK 'D:\BCP\myChar.bcp', 
        FORMATFILE = 'D:\BCP\myChar.fmt'  
        ) AS t1;

-- review results
SELECT * FROM TestDatabase.dbo.myChar;

Tâches associéesRelated Tasks

Pour utiliser des formats de données pour l'importation ou l'exportation en blocTo use data formats for bulk import or bulk export

Voir aussiSee Also

bcp Utility bcp Utility
BULK INSERT (Transact-SQL) BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL) OPENROWSET (Transact-SQL)
Types de données (Transact-SQL) Data Types (Transact-SQL)
Importer des données au format natif et caractère à partir de versions antérieures de SQL ServerImport Native and Character Format Data from Earlier Versions of SQL Server