Spécification de la longueur de préfixe dans des fichiers de données
Pour permettre le stockage de fichier le plus compact pour l'exportation en bloc des 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 sont appelés des 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 demande 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). Pour obtenir un exemple de cette invite dans son contexte, consultez Spécification de formats de données pour la compatibilité à l'aide de bcp.
[!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 Description des fichiers de format non XML.
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 NON 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 tout nouveau travail 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). Pour plus d'informations, consultez Utilisation de types de données de valeur élevée.
Pour plus d'informations, consultez Stockage des données au format caractère (Char).
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