Spécifier une longueur de préfixe dans des fichiers de données à l'aide de bcp (SQL Server)

Pour permettre le stockage de fichier le plus compact lors de l'exportation en bloc de données au format natif vers un fichier de données, la commande bcp ajoute devant chaque champ un ou plusieurs caractères indiquant la longueur du champ. Ces caractères portent le nom de caractères de préfixe de longueur.

Demande de longueur de préfixe par la commande bcp

Si une commande bcp interactive contient l'option in ou out sans commutateur de fichier de format (-f) ou sans commutateur de format de données (-n, -c, -w ou -N), la commande demande la longueur de préfixe de chaque champ de données, comme suit :

Enter prefix length of field <field_name> [<default>]:

Si vous spécifiez 0, bcp vous invite à fournir la longueur du champ (pour un type de données caractère) ou une terminaison de champ (pour un type de données natif non caractère).

[!REMARQUE]

Après avoir indiqué de façon interactive tous les champs dans la commande bcp, cette dernière vous invite enfin à sauvegarder vos réponses dans un fichier de format autre que XML pour chacun des champs fournis. Pour plus d'informations sur les fichiers de format non XML, consultez Fichiers de format non-XML (SQL Server).

Présentation de la longueur de préfixe

Pour stocker la longueur de préfixe d'un champ, vous avez besoin d'un nombre suffisant d'octets pour représenter la longueur maximale du champ. Le nombre d'octets requis dépend également du type de stockage de fichier, de la possibilité de valeurs Null d'une colonne et de ce que les données sont stockées dans le fichier de données au format natif ou au format caractère. Ainsi, un type de données text ou image nécessite quatre caractères de préfixe pour stocker la longueur du champ, alors qu'un type de données varchar n'en utilise que deux. Dans le fichier de données, ces caractères sont stockés au format de données binaire interne de SQL Server.

Important

Lorsque vous utilisez le format natif, préférez les préfixes de longueur aux indicateurs de fin de champ. Les données au format natif peuvent entrer en conflit avec les indicateurs de fin, car ces fichiers sont au format de données binaire interne de SQL Server.

Longueurs de préfixe pour l'exportation en bloc

[!REMARQUE]

La valeur par défaut fournie lors de la demande de longueur de préfixe lorsque vous exportez un champ indique la longueur de champ la plus efficace pour le champ.

Les valeurs NULL sont représentées comme un champ vide. Pour indiquer que le champ est vide (représente NULL), le préfixe de champ contient la valeur -1, signifiant qu'il nécessite au moins 1 octet. Notez que si une colonne de table SQL Server autorise les valeurs NULL, la colonne requiert une longueur de préfixe de 1 ou plus, selon le type de stockage du fichier.

Lorsque vous exportez des données en bloc et que vous les stockez dans un format avec des types de données natifs ou au format caractère, utilisez les longueurs de préfixe répertoriées dans le tableau suivant.

SQL Server

type de données

Format natif

NON NULL

Format natif

NULL

Format caractère

NOT NULL

Format caractère

NULL

char

2

2

2

2

varchar

2

2

2

2

nchar

2

2

2

2

nvarchar

2

2

2

2

text1

4

4

4

4

ntext1

4

4

4

4

binary

2

2

2

2

varbinary

2

2

2

2

image1

4

4

4

4

datetime

0

1

0

1

smalldatetime

0

1

0

1

decimal

1

1

1

1

numeric

1

1

1

1

float

0

1

0

1

real

0

1

0

1

int

0

1

0

1

bigint

0

1

0

1

smallint

0

1

0

1

tinyint

0

1

0

1

money

0

1

0

1

smallmoney

0

1

0

1

bit

0

1

0

1

uniqueidentifier

1

1

0

1

timestamp

1

1

1

1

varchar(max)

8

8

8

8

varbinary(max)

8

8

8

8

UDT (type de données défini par l'utilisateur)

8

8

8

8

XML

8

8

8

8

1 Les types de données ntext, text et image seront supprimés dans une version ultérieure de SQL Server. Évitez par conséquent d'utiliser ces types de données dans les nouveaux travaux de développement et envisagez de modifier les applications qui les utilisent actuellement. Utilisez de préférence les types de données nvarchar(max), varchar(max) et varbinary(max).

Longueurs de préfixe pour l'importation en bloc

Lorsque vous importez des données en bloc, la longueur de préfixe correspond à la valeur spécifiée lors de la création du fichier de données. Si le fichier de données n'a pas été créé à l'aide d'une commande bcp, il n'existe probablement pas de caractères de longueur de préfixe. Dans ce cas, vous devez préciser la valeur 0 comme longueur de préfixe.

[!REMARQUE]

Pour spécifier une longueur de préfixe dans un fichier de données qui n'a pas été créé à l'aide de bcp, utilisez les longueurs indiquées dans Longueurs de préfixe pour l'exportation en bloc, plus haut dans cette rubrique.

Voir aussi

Référence

Utilitaire bcp

Types de données (Transact-SQL)

Concepts

Spécifier la longueur des champs au moyen de bcp (SQL Server)

Spécifier des indicateurs de fin de champ et de fin de ligne (SQL Server)

Spécifier le type de stockage de fichiers à l'aide de bcp (SQL Server)