Spécification de la longueur des champs au moyen de bcp
La longueur de champ indique le nombre maximal de caractères nécessaires pour représenter les données au format caractère. La longueur de champ est déjà connue si les données sont enregistrées au format natif. Par exemple, les données de type int occupent 4 octets. Si vous indiquez 0 pour la longueur du préfixe, la commande bcp vous demande la longueur des champs, les longueurs par défaut des champs et l'influence de la longueur des champs sur le stockage des données dans des fichiers de données qui contiennent des données de type char.
Invite bcp pour la longueur des champs
Si une commande interactive bcp contient l'option in ou out sans format de commutateur de format de fichier (-f) ou de format de données (-n, -c, -w ou -N), la commande demande la longueur de chaque champ de donnée comme suit :
Enter length of field <field_name> [<default>]:
Pour 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 spécifié interactivement tous les champs d'une commande bcp, celle-ci vous demande d'enregistrer vos réponses dans un fichier qui n'est pas au format XML. Pour plus d'informations sur les fichiers qui ne sont pas au format XML, consultez Description des fichiers de format non XML. |
Plusieurs facteurs déterminent si une commande bcp vous demande les longueurs des champs :
- Lorsque vous copiez des données dont la longueur n'est pas constante et si vous spécifiez un préfixe de longueur nulle (0), la commande bcp demande la longueur du champ.
- Lors de la conversion de données de type non caractère en type caractère, la commande bcp suggère une longueur de champ par défaut suffisamment importante pour stocker les données.
- Si un type de stockage de fichier n'est pas de type caractère, la commande bcp ne demande pas de longueur de champ. Les données sont enregistrées dans le format natif Microsoft SQL Server.
Utilisation des longueurs de champs par défaut
Microsoft recommande généralement d'accepter les longueurs de champs par défaut suggérées par la commande bcp. Lors de la création d'un fichier de données en mode caractère, l'utilisation de la longueur de champ par défaut garantit que les données ne sont pas tronquées et que des erreurs de dépassement de capacité numérique ne se produiront pas.
Des problèmes peuvent se produire si vous spécifiez une longueur de champ incorrecte. Par exemple, si cous copiez des données numériques et si vous spécifiez une longueur de champ trop faible pour ces données, l'utilitaire bcp affiche un message de dépassement de capacité et ne copie pas les données. De même, si vous exportez des données de type datetime et spécifiez une longueur de champ inférieure à 26 octets pour la chaîne de caractères, l'utilitaire bcp tronque les données sans message d'erreur.
Important : |
---|
Lorsque vous utilisez l'option de taille par défaut, SQL Server s'attend à lire une chaîne complète. Dans certains cas, l'utilisation de la longueur de champ par défaut peut entraîner l'erreur « Fin de fichier inattendue ». Cette erreur se produit généralement avec les types de données money et datetime lorsque seule une partie du champ attendu se trouve dans le fichier de données ; c'est le cas, par exemple, lorsqu'une valeur datetime de type mm/jj/aa est spécifiée sans la composante d'heure. Elle est donc plus courte que la longueur de 24 caractères attendue pour une valeur datetime au format char. Pour éviter ce type d'erreur, utilisez des marques de fin de champ ou des champs de données de longueur fixe, ou modifiez la longueur par défaut du champ en spécifiant une autre valeur. |
Longueur par défaut des champs pour le stockage de fichiers au format caractère
Le tableau ci-dessous répertorie les longueurs par défaut des champs à enregistrer dans des fichiers de type caractère. Les données pouvant être de type NULL sont de même longueur que les données de type non NULL.
Type de données | Longueur par défaut (en caractères) |
---|---|
char |
Longueur définie pour la colonne |
varchar |
Longueur définie pour la colonne |
nchar |
Le double de la longueur définie pour la colonne |
nvarchar |
Le double de la longueur définie pour la colonne |
Text |
0 |
ntext |
0 |
bit |
1 |
binary |
Le double de la longueur définie pour la colonne + 1 |
varbinary |
Le double de la longueur définie pour la colonne + 1 |
image |
0 |
datetime |
24 |
smalldatetime |
24 |
float |
30 |
real |
30 |
int |
12 |
bigint |
19 |
smallint |
7 |
tinyint |
5 |
money |
30 |
smallmoney |
30 |
decimal |
41* |
numeric |
41* |
uniqueidentifier |
37 |
timestamp |
17 |
varchar(max) |
0 |
varbinary(max) |
0 |
nvarchar(max) |
0 |
UDT |
Longueur de la colonne d'un terme défini par l'utilisateur (UDT) |
XML |
0 |
*Pour plus d'informations sur les types de données decimal et numeric, consultez decimal et numeric (Transact-SQL).
Remarque : |
---|
Une colonne de type tinyint peut posséder des valeurs comprises entre 0 et 255. Le nombre maximal de caractères nécessaires à la représentation de tout nombre compris dans cet intervalle est de trois (représentant les valeurs comprises entre 100 et 255). |
Longueur par défaut des champs pour le stockage de fichiers au format natif
Le tableau ci-dessous répertorie les longueurs par défaut des champs à enregistrer dans des fichiers au format natif. Les données pouvant être de type NULL sont de même longueur que les données de type non NULL. Les données de type caractère sont toujours enregistrées au format caractère.
Type de données | Longueur par défaut (en caractères) |
---|---|
bit |
1 |
binary |
Longueur définie pour la colonne |
varbinary |
Longueur définie pour la colonne |
image |
0 |
datetime |
8 |
smalldatetime |
4 |
float |
8 |
real |
4 |
int |
4 |
bigint |
8 |
smallint |
2 |
tinyint |
1 |
money |
8 |
smallmoney |
4 |
decimal1 |
* |
numeric1 |
* |
uniqueidentifier |
16 |
timestamp |
8 |
1 Pour plus d'informations sur les types de données decimal et numeric, consultez decimal et numeric (Transact-SQL).
Dans tous les cas précédents, pour créer un fichier de données pour un chargement ultérieur dans SQL Server et faire en sorte que l'espace de stockage soit minimal, utilisez un préfixe de longueur avec le type de stockage de fichier et la longueur du champ par défaut.
Voir aussi
Concepts
Spécification des indicateurs de fin de champ et de fin de ligne
Spécification de la longueur de préfixe dans des fichiers de données
Spécification du type de stockage de fichier à l'aide de bcp
Stockage des données au format caractère (Char)
Conservation des valeurs NULL ou utilisation des valeurs par défaut lors de l'importation en bloc
Autres ressources
Utilitaire bcp
Types de données (Transact-SQL)