Utiliser le format caractère pour importer ou exporter des données (SQL Server)
s’applique à :SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Warehouse dans Microsoft Fabric
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.
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.
Remarque
Lors du transfert en bloc de données entre des instances de Microsoft SQL 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. Pour plus d’informations, consultez Utiliser le format de caractères Unicode pour importer ou exporter des données (SQL Server).
Considérations relatives à l’utilisation du format de caractère
Lorsque vous utilisez le format de caractère, tenez compte des éléments 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 spécification des terminateurs de remplacement, consultez Spécifier des indicateurs de fin de champ et de fin de ligne (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 :
Sens de l'opération en bloc Conversion Export 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. Importer Convertit les données de caractères en représentation native, le cas échéant, et convertit les données de caractères de la page de codes du client en page de codes d’une ou plusieurs 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.
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 de données, consultez conversion de type 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 argent qui contient la valeur
1,234,567.123456
est exportée en bloc vers un fichier de données en tant que chaîne de caractères1234567.1235
.
Options de commande pour le format de caractère
Vous pouvez importer des données au format texte dans une table à l’aide de bcp, BULK INSERT (Transact-SQL), ou OPENROWSET (Transact-SQL). Pour une instruction bcp ou BULK INSERT (Transact-SQL), vous pouvez spécifier le format de données dans l’instruction. Pour une instruction OPENROWSET (Transact-SQL), 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 commande suivantes :
Commande | Option | Description |
---|---|---|
bcp |
-c |
Force l’utilitaire bcp à utiliser les données de type caractère.* |
BULK INSERT |
DATAFILETYPE ='char' |
Utilise le format caractère lors de l'importation en bloc des données. |
OPENROWSET |
N/A | Doit utiliser un fichier de format. |
* Pour charger des 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 Importer des données de format natif et de caractères à partir de versions antérieures de SQL Server.
Remarque
Vous pouvez également spécifier le formatage par champ dans un fichier de format. Pour plus d’informations, consultez Format de fichiers pour importer ou exporter des données (SQL Server).
Exemples de conditions de test
Les exemples de cet article sont basés sur le tableau et le fichier de format suivants.
Exemple de table
Le script suivant crée une base de données de test, une table nommée myChar
et remplit la table avec certaines valeurs initiales. Exécutez l’instruction Transact-SQL suivant dans Microsoft SQL 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 XML
SQL Server prend en charge deux types de fichier de format : format XML et format non XML. Le format non XML est le format d’origine pris en charge dans les versions précédentes de SQL Server. Pour plus d’informations, consultez fichiers de format non XML (SQL Server). La commande suivante utilise l’utilitaire bcp pour générer un fichier de format non xml, myChar.fmt
, basé sur le schéma de myChar
. Pour utiliser une commande bcp pour créer un fichier de format, spécifiez l’argument FORMAT
et utilisez nul
au lieu d’un chemin d’accès au fichier de données. L’option de format nécessite également l’option -f
. En outre, pour cet exemple, le qualificateur c
est utilisé pour spécifier des données de caractères et T
est utilisé pour spécifier une connexion approuvée à l’aide de la sécurité intégrée.
À partir d'une invite de commandes, entrez la commande suivante :
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. Sinon, vous recevez probablement le message d’erreur suivant :
SQLState = S1000, NativeError = 0
Error = [Microsoft][ODBC Driver 13 for SQL Server]I/O error while reading BCP format file
Exemples
Les exemples suivants utilisent les fichiers de base de données et de format créés précédemment dans cet article.
Utiliser le format bcp et le format caractère pour exporter des données
-c
interrupteur et OUT
commande.
Le fichier de données créé dans cet exemple sera utilisé dans tous les exemples suivants.
À partir d'une invite de commandes, entrez la commande suivante :
bcp TestDatabase.dbo.myChar OUT D:\BCP\myChar.bcp -T -c
REM Review results
NOTEPAD D:\BCP\myChar.bcp
Utiliser le format bcp et caractère pour importer des données sans fichier de format
Commutateur -c
et commande IN
. À partir d'une invite de commandes, entrez la commande suivante :
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;"
Utiliser bcp et le format de caractères pour importer des données avec un fichier de format non-XML
Les commutateurs -c
et -f
et la commande IN
. À partir d'une invite de commandes, entrez la commande suivante :
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;"
Utiliser BULK INSERT et le format de caractère sans utiliser de fichier de format
Argument DATAFILETYPE
. Exécutez l’instruction Transact-SQL suivant dans Microsoft SQL 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;
Utiliser BULK INSERT et un format de caractère avec un fichier de format non XML
Il s’agit d’un exemple de l’argument FORMATFILE
. Exécutez l’instruction Transact-SQL suivant dans Microsoft SQL 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;
Utiliser OPENROWSET et un format de caractère avec un fichier de format non XML
Exemple de l’argument FORMATFILE
. Exécutez l’instruction Transact-SQL suivant dans Microsoft SQL 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ées
Pour utiliser des formats de données pour l’importation en bloc ou l’exportation en bloc :
Importer des données au format natif et caractère à partir de versions antérieures de SQL Server
Utiliser le format natif pour importer ou exporter des données (SQL Server)
Utiliser le format caractère Unicode pour importer ou exporter des données (SQL Server)
Utiliser le format natif Unicode pour importer ou exporter des données (SQL Server)