Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Le format natif Unicode est utile lorsque des informations doivent être copiées d'un programme d’installation Microsoft SQL Server à un 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 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 la quantité de stockage requise pour les colonnes affecté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.
Options de commande pour le format natif Unicode
Vous pouvez importer des données de format natif Unicode dans une table à l’aide de bcp, BULK INSERT ou OPENROWSET BULK.
- Pour une commande bcp ou une instruction BULK INSERT , vous pouvez spécifier le format de données dans l’instruction.
- Pour une instruction 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 | Choix | Descriptif |
---|---|---|
bcp |
-N |
Provoque l’utilisation bcp du format natif Unicode, qui utilise des types de données natifs (base de données) pour toutes les données non génériques et le format de données caractères Unicode pour toutes les données caractère (char, nchar, varchar, nvarchar, texte et 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. |
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 cette rubrique sont basés sur l’exemple de tableau myWidenative
et le fichier myWidenative.fmt
de format . Remplacez les chemins d’accès de fichiers locaux par un chemin d’accès de fichier local sur votre système.
Exemple de table
Le script suivant crée une base de données de test, une table nommée myWidenative
et remplit la table avec certaines valeurs initiales. Exécutez les opérations Transact-SQL suivantes :
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. Pour plus d’informations, consultez Utiliser des fichiers de format non XML (SQL Server). La commande suivante utilise l’utilitaire bcp pour générer un fichier de format non xml, myWidenative.fmt
basé sur le schéma de myWidenative
.
- Pour utiliser une commande bcp pour créer un fichier de format, spécifiez l’argument
format
et utiliseznul
au lieu d’un chemin d’accès au fichier de données. - L’option de format nécessite également l’option
-f
. -
c
est utilisé pour spécifier des données de caractère -
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.
Utiliser bcp et le format natif Unicode pour exporter des données
Commutateur -N
et commande OUT
.
Le fichier de données créé dans cet exemple sera 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
Utiliser bcp et le format natif Unicode pour importer des données sans 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
Utiliser bcp et le format natif Unicode pour importer des données avec un fichier de format non XML
Les commutateurs -N
et -f
et la 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 -f D:\BCP\myWidenative.fmt -T -N
REM Review results is SSMS
Utiliser BULK INSERT et le format natif Unicode sans fichier de format
Argument DATAFILETYPE
.
Exécutez l’instruction Transact-SQL suivant 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;
Utiliser BULK INSERT et le format natif Unicode avec un fichier de format non XML
Argument FORMATFILE
.
Exécutez l’instruction Transact-SQL suivant 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;
Utiliser OPENROWSET et le format natif Unicode avec un fichier de format non XML
Argument FORMATFILE
.
Exécutez l’instruction Transact-SQL suivant 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;
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 de format natif et de caractère à partir de versions antérieures de SQL Server
- Utiliser le format caractère pour importer ou exporter des données (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)