Importer des données au format natif et caractère à partir de versions antérieures de SQL Server

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

Dans SQL Server 2014 (12.x) et versions ultérieures, vous pouvez utiliser bcp pour importer des données au format natif et au format caractères à partir de SQL Server 2000 (8.x), SQL Server 2005 (9.x), SQL Server 2008 (10.0.x), SQL Server 2008 R2 (10.50.x) ou SQL Server 2012 (11.x) à l’aide de -V Interrupteur. Le commutateur -V entraîne l’utilisation par SQL Server des types de données à partir de la version antérieure spécifiée de SQL Server, et le format du fichier de données est identique à celui de cette version antérieure.

Pour spécifier une version antérieure de SQL Server pour un fichier de données, utilisez le commutateur -V avec l’un des qualificateurs suivants :

Version de SQL Server Qualificateur
SQL Server 2000 (8.x) -V80
SQL Server 2005 (9.x) -V90
SQL Server 2008 (10.0.x) -V100
SQL Server 2012 (11.x) -V 110

Interprétation des types de données

SQL Server 2005 (9.x) et les versions ultérieures prennent en charge certains nouveaux types. Pour importer un nouveau type de données dans une version de SQL Server antérieure, ce type de données doit être stocké dans un format lisible par les anciens clients bcp . Le tableau ci-dessous résume le mode de conversion des nouveaux types de données pour assurer leur compatibilité avec les versions précédentes de SQL Server.

Nouveaux types de données dans SQL Server 2005 Types de données compatibles dans la version 6x Types de données compatibles dans la version 70 Types de données compatibles dans la version 80
bigint decimal decimal *
sql_variant text nvarchar(4000) *
varchar(max) text text text
nvarchar(max) ntext ntext ntext
varbinary(max) image image image
XML ntext ntext ntext
UDT** image image image

\* Ce type est pris en charge en natif.

** UDT indique un type défini par l’utilisateur.

Exportation à l’aide de -V 80

Quand vous exportez des données en bloc à l’aide du commutateur -V80, les données nvarchar(max) , varchar(max) , varbinary(max) , XML et UDT en mode natif sont stockées avec un préfixe à 4 octets, comme les données text, imageet ntext, plutôt qu’avec un préfixe à 8 octets, qui s’utilise par défaut pour SQL Server 2005 (9.x) et les versions ultérieures.

Copie de valeurs de date

bcp utilise l’API de copie en bloc ODBC. Par conséquent, pour importer des valeurs de date dans SQL Server, bcp utilise le format de date ODBC (yyyy-mm-dd hh:mm:ss[ .f... ]).

La commande bcp exporte des fichiers de données au format caractère à l’aide du format par défaut ODBC pour les valeurs datetime et smalldatetime . Par exemple, une colonne datetime contenant la date 12 Aug 1998 est copiée en bloc dans un fichier de données en tant que chaîne de caractères 1998-08-12 00:00:00.000.

Important

Lors de l’importation de données dans un champ smalldatetime à l’aide de bcp, vérifiez que la valeur des secondes est 00.000. Sinon, l’opération échouera. Le type de données smalldatetime ne conserve que les valeurs à la minute la plus proche. BULK INSERT et INSERT ... SELECT * FROM OPENROWSET(BULK...) n'échoueront pas dans ce cas, mais tronqueront la valeur des secondes.

Tâches associées

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)
Compatibilité descendante du moteur de base de données SQL Server
CAST et CONVERT (Transact-SQL)