Utilisation de fichiers de données et de format
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Le programme de copie en bloc le plus simple permet d'effectuer les opérations suivantes :
Les appels bcp_init pour spécifier la copie en bloc (définie BCP_OUT) à partir d’une table ou d’une vue vers un fichier de données.
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 résultant peut également être entré 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 à partir d’une table ou d’une vue :
Appelez bcp_init pour spécifier la copie en bloc, mais spécifiez NULL pour le nom de la table.
Appelez bcp_control avec eOption défini sur BCPHINTS et iValue défini sur un pointeur vers une chaîne SQLTCHAR contenant l’instruction Transact-SQL.
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 est créé contenant le premier jeu de résultats de l’instruction Transact-SQL. La copie en bloc ignore tout jeu de résultats après le premier si l’instruction Transact-SQL génère plusieurs jeux de résultats.
Pour créer un fichier de données dans lequel les données de colonne sont stockées dans un format différent de celui de la table, appelez bcp_columns pour spécifier le nombre de colonnes qui seront modifiées, puis appelez bcp_colfmt pour chaque colonne dont vous souhaitez modifier le format. Cette opération s’effectue après l’appel de 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 dans le fichier de données. Il peut être utilisé lors de la copie en bloc dans ou hors service. 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 caractères d’onglet, vous pouvez créer un fichier délimité par des onglets à l’aide de bcp_colfmt pour définir le caractère de tabulation comme pointeur de fin pour chaque colonne.
Lors de la copie en bloc et de l’utilisation de bcp_colfmt, vous pouvez facilement créer un fichier de format décrivant le fichier de données que vous avez créé en appelant bcp_writefmt après le dernier appel à bcp_colfmt.
Lors de la 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 à partir d’un fichier de données. bcp_control définit des options, telles que le nombre maximal d’erreurs avant l’arrêt, la ligne du fichier sur laquelle démarrer la copie en bloc, la ligne à arrêter et la taille du lot.