Partager via


Utilisation de fichiers de données et de format

Le programme de copie en bloc le plus simple permet d'effectuer les opérations suivantes :

  1. Il appelle bcp_init pour spécifier la copie en bloc (définir BCP_OUT) à partir d'une table ou d'une vue vers un fichier de données.

  2. Il appelle bcp_exec pour exécuter l'opération de copie en bloc.

Le fichier de données est créé en mode natif ; les données de toutes les colonnes dans une table ou une vue sont stockées dans le fichier de données sous le même format que celui de la base de données. Le fichier peut ensuite être copié en bloc vers un serveur en suivant la même procédure et en définissant DB_IN au lieu de DB_OUT. Cela ne fonctionne que si les tables source et cible ont exactement la même structure. Le fichier de données obtenu peut également être inséré dans l'utilitaire bcp à l'aide du commutateur /n (mode natif).

Pour copier en bloc le jeu de résultats d'une instruction Transact-SQL plutôt que directement depuis une table ou une vue :

  1. Appelez bcp_init pour spécifier la copie en bloc mais attribuez la valeur NULL pour le nom de la table.

  2. Appelez bcp_control avec eOption défini sur BCPHINTS et iValue défini sur un pointeur vers une chaîne SQLTCHAR qui contient l'instruction Transact-SQL.

  3. Appelez bcp_exec pour exécuter l'opération de copie en bloc.

L'instruction Transact-SQL peut être n'importe quelle instruction qui génère un jeu de résultats. Le fichier de données contenant le premier jeu de résultats de l'instruction Transact-SQL est créé. La copie en bloc ignore tous les jeux de résultats après le premier si l'instruction Transact-SQL génère plusieurs jeux de résultats (par exemple, si elle contient la clause COMPUTE ou COMPUTE BY).

Pour créer un fichier de données dans lequel les données de la colonne sont stockées dans un autre format que celui de la table, appelez bcp_columns pour spécifier combien de colonnes seront modifiées, puis appelez bcp_colfmt pour chaque colonne dont vous souhaitez modifier le format. Ceci a lieu après avoir appelé bcp_init mais avant d'appeler bcp_exec. bcp_colfmt spécifie le format dans lequel les données de la colonne sont stockées au sein du fichier de données. Il peut être utilisé lors de la copie en bloc vers ou à partir d'éléments. Vous pouvez également utiliser bcp_colfmt pour définir les terminateurs de ligne et de colonne. Par exemple, si vos données ne contiennent pas de tabulations, vous pouvez créer un fichier délimité par des tabulations en utilisant bcp_colfmt pour définir la tabulation en tant que terminateur pour chaque colonne.

Lors d'une copie en bloc et de l'utilisation de bcp_colfmt, vous pouvez aisément créer un fichier de format qui décrit le fichier de données que vous avez créé en appelant bcp_writefmt après le dernier appel à bcp_colfmt.

Lorsque vous effectuez une copie en bloc à partir d'un fichier de données décrit par un fichier de format, lisez le fichier de format en appelant bcp_readfmt après bcp_init mais avant bcp_exec.

La fonction bcp_control contrôle plusieurs options lors de la copie en bloc dans SQL Server depuis un fichier de données. bcp_control définit les options, telles que le nombre maximal d'erreurs avant l'arrêt, la ligne dans le fichier dans lequel la copie en bloc est à démarrer, la ligne sur laquelle s'arrêter et la taille du lot.