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

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

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, comme char, nchar, varchar, nvarchar, texte, 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 dans un 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 concernées. Les métadonnées d’origine sont conservées et les valeurs sont reconverties dans leur type de données d’origine ( char et varchar ) au moment où elles sont importées en bloc dans une colonne de table.

Dans cette rubrique :
Options de commande pour le format natif Unicode
Exemples de conditions de test
 ● Échantillon de table
 ● Échantillon de fichier de format non XML
Exemples
 ●Utilisation de bcp et du format natif Unicode pour exporter des données
 ●Utilisation de bcp et du format natif Unicode pour importer des données sans un fichier de format
 ●Utilisation de bcp et du format natif Unicode pour importer des données avec un fichier de format non XML
 ●Utilisation de BULK INSERT et du format natif Unicode sans un fichier de format
 ●Utilisation de BULK INSERT et du format natif Unicode avec un fichier de format non XML
 ●Utilisation d’OPENROWSET et du format natif Unicode avec un fichier de format non XML
Tâches associé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...). Si vous utilisez une commande bcp ou une instruction BULK INSERT, vous pouvez spécifier le format de données dans l’instruction. 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 pris en charge par les options de commande 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, textet ntext).
BULK INSERT DATAFILETYPE ='widenative' Utilise le format natif Unicode lors de l’importation en bloc des données.
OPENROWSET N/A Doit utiliser un fichier de format.

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 de conditions de test

Les exemples de cette rubrique sont fondés sur la table et le fichier de format définis ci-dessous.

Exemple de table

Le script ci-dessous crée une base de données test, une table nommée myWidenative et remplit la table avec des valeurs initiales. Exécutez l’instruction Transact-SQL suivante dans Microsoft SQL Server Management Studio (SSMS) :

CREATE DATABASE TestDatabase;
GO

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

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

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

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. Veuillez consulter Fichiers de format non XML (SQL Server) pour obtenir des informations détaillées. La commande suivante utilise l’utilitaire bcp pour générer un fichier de format non xml myWidenative.fmtbasé sur le schéma de myWidenative. 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. L’option format nécessite également l’option -f . 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. À partir d’une invite de commandes, entrez les commandes suivantes :

bcp TestDatabase.dbo.myWidenative format nul -f D:\BCP\myWidenative.fmt -T -N

REM Review file
Notepad D:\BCP\myWidenative.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 ci-dessous utilisent la base de données et les fichiers de format créés ci-dessus.

Utilisation de bcp et du format natif Unicode pour exporter des données

Commutateur -N et commande OUT . Remarque : Le fichier de données créé dans cet exemple est utilisé dans tous les exemples suivants. À partir d’une invite de commandes, entrez les commandes suivantes :

bcp TestDatabase.dbo.myWidenative OUT D:\BCP\myWidenative.bcp -T -N

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

Utilisation de bcp et du format natif Unicode pour importer des données sans un fichier de format

Commutateur -N et commande IN . À partir d’une invite de commandes, entrez les commandes suivantes :

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

REM Import data
bcp TestDatabase.dbo.myWidenative IN D:\BCP\myWidenative.bcp -T -N

REM Review results is SSMS

Utilisation de bcp et du format natif Unicode pour importer des données avec un fichier de format non XML

Commutateurs -N et -f switches et IN commet. À partir d’une invite de commandes, entrez les commandes suivantes :

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

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

REM Review results is SSMS

Utilisation de BULK INSERT et du format natif Unicode sans un fichier de format

ArgumentDATAFILETYPE . Exécutez l’instruction Transact-SQL suivante dans Microsoft SQL Server Management Studio (SSMS) :

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

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

Utilisation de BULK INSERT et du format natif Unicode avec un fichier de format non XML

ArgumentFORMATFILE . Exécutez l’instruction Transact-SQL suivante dans Microsoft SQL Server Management Studio (SSMS) :

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

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

Utilisation d’OPENROWSET et du format natif Unicode avec un fichier de format non XML

ArgumentFORMATFILE . Exécutez l’instruction Transact-SQL suivante dans Microsoft SQL Server Management Studio (SSMS) :

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

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

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)