Share via


Stockage des données au format caractère (Char)

La méthode de stockage des données au format Char dans un fichier de données exporté dépend de la méthode de stockage des données qui a été utilisée dans la table MicrosoftSQL Server. Deux modèles de stockage sont importants, comme suit :

  • SQL Server Données char

  • Autres types de données convertis au stockage char

Modèles de stockage des données char de SQL Server

SQL Server Les données char de SQL Server sont toujours stockées dans le fichier de données avec la longueur totale de la colonne définie. Par exemple, une colonne définie comme char(10) occupe toujours la place de 10 caractères dans le fichier de données, indépendamment de la longueur des données stockées dans la colonne. Si les données char n'occupent pas tout le champ, des espaces sont ajoutés aux données comme caractères de remplissage. Pour plus d'informations, consultez SET ANSI_PADDING (Transact-SQL). Cependant, pour le type varchar, seul le nombre réel de caractères est stocké, sauf si vous choisissez un préfixe ou un terminateur.

Modèles de stockage des autres types de données convertis en données char

L'espace de stockage alloué dans le fichier aux données qui ne sont pas au format Char mais stockées au format Char est déterminé par l'association de la longueur de champ, de la longueur de préfixe et des terminateurs, comme suit :

  • Avec une longueur de préfixe égale à 0 et aucun terminateur, le champ est traité comme s'il était de longueur fixe, comme spécifié par la valeur de longueur de champ. Si vous spécifiez une longueur de préfixe égale à 0 et aucun terminateur, l'utilitaire bcp alloue la quantité d'espace maximale indiquée dans l'invite de la longueur de champ, car il s'agit de l'espace maximal nécessaire pour le type de données en question. Il est ainsi possible de déterminer où se termine un champ et où commence le champ suivant.

  • Avec une longueur de préfixe égale à 0 et un terminateur de champ, la longueur de champ est ignorée. L'espace de stockage utilisé par le champ correspond à la longueur des données, plus tous les terminateurs.

    Important

    La spécification d'un préfixe et d'une marque de fin n'est prise en charge que dans les fichiers de format autre que XML.

  • Avec une longueur de préfixe égale à 1, 2 ou 4, la longueur de champ est ignorée. L'espace utilisé par le champ correspond à sa longueur, à la longueur des préfixes de champ, plus tous les terminateurs.

Dans tous les cas mentionnés dans la liste précédente, vous pouvez créer un fichier de données, en vue de son rechargement ultérieur dans SQL Server, qui utilise un espace de stockage minimal. Pour minimiser l'espace de stockage, utilisez un caractère de préfixe de longueur avec le type de stockage de fichier par défaut et la longueur de champ par défaut.

Exemples

Les exemples suivants illustrent l'interaction entre la longueur de champ, la longueur de préfixe et les terminateurs lorsque les données sont stockées au format char. Une valeur de longueur de préfixe (le cas échéant) est représentée par P. Un terminateur (le cas échéant) est représenté par T. Les points de suspension (...) indiquent que le modèle est répété pour chaque champ.

Exemples de modèles de stockage des données char de SQL Server :

[!REMARQUE]

Les données char sont toujours stockées avec leur longueur totale (c'est-à-dire avec un ou plusieurs espaces,  ' ', comme caractères de remplissage).

Le schéma de la table est t1 (c1 char(8)). Les exemples utilisent une valeur de 5 caractères (représentée sous la forme Hello), qui est stockée dans un champ d'une longueur de 8 caractères. Dans tous les champs de données fournis en exemple, trois espaces doivent systématiquement être ajoutés à la valeur Hello de 5 caractères. Les espaces ajoutés sont représentés par trois points (∙∙∙).

 

Longueur de préfixe = 0

Longueur de préfixe = 1, 2 ou 4

Pas de terminateur :

Hello∙∙∙Hello∙∙∙...

PHello∙∙∙PHello∙∙∙...

Terminateur :

Hello∙∙∙THello∙∙∙T...

PHello∙∙∙TPHello∙∙∙T...

RemarqueRemarque
Cet exemple ne s'applique qu'à un fichier de format autre que XML.

Exemples de modèles de stockage des données qui ne sont pas de type char lorsqu'elles sont converties au stockage char

Le schéma de la table est t1 (c1 int), et chaque ligne comporte une valeur entière de 999.

[!REMARQUE]

Pour les données qui sont converties au stockage char lorsque la longueur de préfixe est 1, 2 ou 4, ou lorsqu'il existe un terminateur de champ, il est inutile d'ajouter des espaces à la valeur des données.

 

Longueur de préfixe = 0

Longueur de préfixe = 1, 2 ou 4

Pas de terminateur :

999∙∙999∙∙...

P999P999...

Terminateur :

999T999T...

P999TP999T...

RemarqueRemarque
Cet exemple ne s'applique qu'à un fichier de format autre que XML.

[!REMARQUE]

Si vous ne spécifiez pas la longueur de préfixe ou le terminateur, la valeur entière est stockée en utilisant 12 octets (les 9 derniers octets stockent les espaces).