Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La fonction bcp_setcolfmt remplace la bcp_colfmt. Lors de la spécification du classement de colonne, la fonction bcp_setcolfmt doit être utilisée. bcp_setbulkmode pouvez être utilisé pour spécifier plusieurs formats de colonne.
Cette fonction offre une approche flexible pour spécifier le format de colonne dans une opération de copie en bloc. Il est utilisé pour définir des attributs de format de colonne individuels. Chaque appel à bcp_setcolfmt définit un attribut de format de colonne.
La fonction bcp_setcolfmt spécifie le format source ou cible des données dans un fichier utilisateur. Lorsqu’elle est utilisée comme format source, bcp_setcolfmt spécifie le format d’un fichier de données existant utilisé comme source de données dans une copie en bloc dans une table dans SQL Server. Lorsqu’il est utilisé comme format cible, le fichier de données est créé à l’aide des formats de colonne spécifiés avec bcp_setcolfmt.
Syntaxe
RETCODE bcp_setcolfmt (
HDBC
hdbc
,
INT
field
,
INT
property
,
void*
pValue
,
INT
cbValue
);
Les arguments
hdbc
Handle de connexion ODBC compatible avec la copie en bloc.
champ
Numéro de colonne ordinal pour lequel la propriété est définie.
propriété
Est l’une des constantes de propriété. Les constantes de propriété sont définies dans cette table.
| Propriété | Valeur | Descriptif |
|---|---|---|
| BCP_FMT_TYPE | OCTET | Type de données de cette colonne dans le fichier utilisateur. Si elle diffère du type de données de la colonne correspondante dans la table de base de données, la copie en bloc convertit les données si possible. Le paramètre BCP_FMT_TYPE est énuméré par les jetons de type de données SQL Server dans sqlncli.h, plutôt que par les énumérateurs de type de données ODBC C. Par exemple, vous pouvez spécifier une chaîne de caractères, un type ODBC SQL_C_CHAR, à l’aide du type SQLCHARACTER spécifique à SQL Server. Pour spécifier la représentation de données par défaut pour le type de données SQL Server, définissez ce paramètre sur 0. Pour une copie en bloc de SQL Server dans un fichier, lorsque BCP_FMT_TYPE est SQLDECIMAL ou SQLNUMERIC : - Si la colonne source n’est pas décimale ou numérique, la précision et l’échelle par défaut sont utilisées. - Si la colonne source est décimale ou numérique, la précision et l’échelle de la colonne source sont utilisées. |
| BCP_FMT_INDICATOR_LEN | INT | Longueur en octets de l’indicateur (préfixe). Il s’agit de la longueur, en octets, d’un indicateur de longueur/null dans les données de colonne. Les valeurs de longueur d’indicateur valides sont 0 (lorsque vous n’utilisez aucun indicateur), 1, 2 ou 4. Pour spécifier l’utilisation de l’indicateur de copie en bloc par défaut, définissez ce paramètre sur SQL_VARLEN_DATA. Les indicateurs apparaissent en mémoire directement avant toutes les données, et dans le fichier de données directement avant les données auxquelles elles s’appliquent. Si plusieurs moyens de spécifier une longueur de colonne de fichier de données sont utilisés (par exemple, un indicateur et une longueur de colonne maximale, ou un indicateur et une séquence de fin), la copie en bloc choisit celle qui entraîne la copie de la quantité minimale de données copiées. Les fichiers de données générés par la copie en bloc lorsqu’aucune intervention de l’utilisateur n’ajuste le format des données contiennent des indicateurs lorsque les données de colonne peuvent varier en longueur ou que la colonne peut accepter NULL comme valeur. |
| BCP_FMT_DATA_LEN | DBINT | Longueur en octets des données (longueur de colonne) Il s’agit de la longueur maximale, en octets, des données de cette colonne dans le fichier utilisateur, sans inclure la longueur d’un indicateur de longueur ou d’un indicateur de fin. Définir BCP_FMT_DATA_LEN sur SQL_NULL_DATA indique que toutes les valeurs de la colonne de fichier de données sont ou doivent être définies sur NULL. Définir BCP_FMT_DATA_LEN sur SQL_VARLEN_DATA indique que le système doit déterminer la longueur des données dans chaque colonne. Pour certaines colonnes, cela peut signifier qu’un indicateur de longueur/null est généré pour précéder les données d’une copie à partir de SQL Server, ou que l’indicateur est attendu dans les données copiées vers SQL Server. Pour les types de données binaires et caractères SQL Server, BCP_FMT_DATA_LEN peut être SQL_VARLEN_DATA, SQL_NULL_DATA, 0 ou une valeur positive. Si BCP_FMT_DATA_LEN est SQL_VARLEN_DATA, le système utilise l’indicateur de longueur, le cas échéant, ou une séquence de terminateur pour déterminer la longueur des données. Si un indicateur de longueur et une séquence de fin sont fournis, la copie en bloc utilise celle qui entraîne la copie minimale des données. Si BCP_FMT_DATA_LEN est SQL_VARLEN_DATA, le type de données est un caractère SQL Server ou un type binaire, et aucun indicateur de longueur ni séquence de fin n’est spécifié, le système retourne un message d’erreur. Si BCP_FMT_DATA_LEN est égal à 0 ou une valeur positive, le système utilise BCP_FMT_DATA_LEN comme longueur maximale des données. Toutefois, si, en plus d’une BCP_FMT_DATA_LEN positive, une séquence d’indicateur de longueur ou de fin est fournie, le système détermine la longueur des données à l’aide de la méthode qui entraîne la quantité minimale de données copiées. La valeur BCP_FMT_DATA_LEN représente le nombre d’octets de données. Si les données de caractères sont représentées par des caractères larges Unicode, une valeur de paramètre positive BCP_FMT_DATA_LEN représente le nombre de caractères multipliés par la taille, en octets, de chaque caractère. |
| BCP_FMT_TERMINATOR | LPCBYTE | Pointeur vers la séquence de terminateur (ANSI ou Unicode selon les besoins) à utiliser pour cette colonne. Ce paramètre est utile principalement pour les types de données caractères, car tous les autres types sont de longueur fixe ou, dans le cas de données binaires, nécessitent un indicateur de longueur pour enregistrer avec précision le nombre d’octets présents. Pour éviter la fin des données extraites ou pour indiquer que les données d’un fichier utilisateur ne sont pas arrêtées, définissez ce paramètre sur NULL. Si plusieurs moyens de spécifier une longueur de colonne de fichier utilisateur sont utilisés (par exemple, un indicateur de fin et une longueur, ou un indicateur de fin et une longueur de colonne maximale), la copie en bloc choisit celle qui entraîne la copie minimale des données. L’API de copie en bloc effectue la conversion de caractères Unicode vers MBCS en fonction des besoins. Veillez à ce que la chaîne d’octet de fin et la longueur de la chaîne d’octets soient correctement définies. |
| BCP_FMT_SERVER_COL | INT | Position ordinale de la colonne dans la base de données |
| BCP_FMT_COLLATION | LPCSTR | Nom du classement. |
pValue
Pointeur vers la valeur à associer à la propriété. Elle permet à chaque propriété de format de colonne d’être définie individuellement.
cbvalue
Longueur de la mémoire tampon de propriété en octets.
Retours
SUCCEED ou FAIL.
Remarques
Cette fonction remplace la fonction bcp_colfmt . Toutes les fonctionnalités de bcp_colfmt sont fournies dans bcp_setcolfmt fonction. En outre, la prise en charge du classement des colonnes est également fournie. Il est recommandé de définir les attributs de format de colonne suivants dans l’ordre indiqué ci-dessous :
BCP_FMT_SERVER_COL
BCP_FMT_DATA_LEN
BCP_FMT_TYPE
La fonction bcp_setcolfmt vous permet de spécifier le format de fichier utilisateur pour les copies en bloc. Pour la copie en bloc, un format contient les parties suivantes :
Mappage des colonnes de fichier utilisateur aux colonnes de base de données.
Type de données de chaque colonne de fichier utilisateur.
Longueur de l’indicateur facultatif pour chaque colonne.
Longueur maximale des données par colonne de fichier utilisateur.
Séquence d’octets de fin facultative pour chaque colonne.
Longueur de la séquence d’octets de fin facultative.
Chaque appel à bcp_setcolfmt spécifie le format d’une colonne de fichier utilisateur. Par exemple, pour modifier les paramètres par défaut de trois colonnes dans un fichier de données utilisateur à cinq colonnes, appelez d’abord bcp_columns(5), puis appelez bcp_setcolfmt cinq fois, avec trois de ces appels définissant votre format personnalisé. Pour les deux appels restants, définissez BCP_FMT_TYPE sur 0 et définissez BCP_FMT_INDICATOR_LENGTH, BCP_FMT_DATA_LEN et cbValue sur 0, SQL_VARLEN_DATA et 0 respectivement. Cette procédure copie les cinq colonnes, trois avec votre format personnalisé et deux avec le format par défaut.
La fonction bcp_columns doit être appelée avant d’appeler bcp_setcolfmt.
Vous devez appeler bcp_setcolfmt une fois pour chaque propriété de chaque colonne dans le fichier utilisateur.
Vous n’avez pas besoin de copier toutes les données d’un fichier utilisateur dans la table SQL Server. Pour ignorer une colonne, spécifiez le format des données de la colonne, en définissant le paramètre BCP_FMT_SERVER_COL sur 0. Si vous souhaitez ignorer une colonne, vous devez spécifier son type.
La fonction bcp_writefmt peut être utilisée pour conserver la spécification de format.
prise en charge bcp_setcolfmt des fonctionnalités de date et d’heure améliorées
Les types utilisés avec la propriété BCP_FMT_TYPE pour les types date/heure sont spécifiés dans les modifications de copie en bloc pour les types de date et d’heure améliorés (OLE DB et ODBC).
Pour plus d’informations, consultez Améliorations de date et d’heure (ODBC).