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

Pour utiliser la commande bcp pour importer des données au format natif et caractère à partir de Microsoft SQL Server 2005 ou une version antérieure, utilisez le commutateur -V. Lorsque le commutateur -V est spécifié, SQL Server 2008 R2 utilise les types de données des versions précédentes de Microsoft SQL Server, et le format du fichier de données est identique à celui de cette version précédente.

Pour spécifier si le fichier de données est au niveau d'une version précédente de SQL Server, utilisez le commutateur -V de la manière suivante :

Version de SQL Server

Qualificateur

SQL Server 7.0

-V70

SQL Server 2000

-V80

SQL Server 2005

-V90

Interprétation des types de données SQL Server

SQL Server 2005 et les versions ultérieures prennent en charge certains nouveaux types. Pour importer un nouveau type de données dans une version antérieure, il 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 de SQL Server 2005 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

UDT1

image

image

image

* Ce type est pris en charge en natif.

1 UDT indique un type défini par l'utilisateur.

Exportation à partir de SQL Server 2005 et versions ultérieures

Lorsque vous exportez des données en bloc à partir de SQL Server 2005 ou versions ultérieures, à 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, image et ntext, et non avec un préfixe à 8 octets, qui est la valeur par défaut pour SQL Server 2005 et versions ultérieures.

Exportation à partir de SQL Server 7.0 ou de SQL Server 2000

Lors de l'exportation de données en bloc à partir de SQL Server 7.0 ou de SQL Server 2000, tenez compte des éléments suivants :

  • Dans SQL Server 7.0 et SQL Server 2000, la valeur 0 représente une colonne de longueur nulle.

  • Le format de stockage des données bigint exportées à partir de SQL Server 7.0 dépend du format de données du fichier de données :

    • Dans un fichier de données en mode natif ou au format natif Unicode, les données bigint sont stockées au format decimal(19,0).

    • Dans un fichier de données en mode caractère ou au format de caractères Unicode, les données bigint sont stockées sous forme de chaîne de caractères ou Unicode de [-]digits, (par exemple, –25688904432).

Copie de valeurs de date

À partir de SQL Server 7.0, l'utilitaire bcp utilise l'API de copie en bloc ODBC. Par conséquent, pour importer des valeurs de date dans SQL Server 7.0 ou une version ultérieure, 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.