Utilizar archivos de datos y archivos de formato

El programa de copia masiva más simple hace lo siguiente:

  1. Llama a bcp_init para especificar el volumen de copia masiva (establecer BCP_OUT) de una tabla o vista para un archivo de datos.

  2. Llama a bcp_exec para ejecutar la operación de copia masiva.

El archivo de datos se crea en modo nativo; por tanto, los datos de todas las columnas de la tabla o la vista se almacenan en el archivo de datos con el mismo formato que en la base de datos. A continuación, se puede realizar una copia masiva del archivo en un servidor mediante estos mismos pasos y estableciendo DB_IN en lugar de DB_OUT. Esto sólo funciona si las tablas de destino y origen tienen exactamente la misma estructura. El archivo de datos resultante también se puede entrar en la utilidad bcp mediante el modificador /n (modo nativo).

Para realizar la copia masiva del conjunto de resultados de una instrucción Transact-SQL en lugar de directamente de una tabla o vista:

  1. Llame a bcp_init para especificar el volumen de copia masiva pero especifique NULL para el nombre de la tabla.

  2. Llame a bcp_control con eOption establecido en BCPHINTS e iValue establecido en un puntero a una cadena SQLTCHAR que contiene la instrucción Transact-SQL.

  3. Llame a bcp_exec para ejecutar la operación de copia masiva.

La instrucción Transact-SQL puede ser cualquier instrucción que genere un conjunto de resultados. Se crea el archivo de datos que contiene el primer conjunto de resultados de la instrucción Transact-SQL. La copia masiva omite cualquier conjunto de resultados después del primero si la instrucción Transact-SQL genera varios conjuntos de resultados (por ejemplo, si contiene COMPUTE o COMPUTE BY).

Para crear un archivo de datos en el que los datos de columna se almacenan con un formato diferente que en la tabla, llame a bcp_columns para especificar cuántas columnas se cambiarán y, a continuación, llame a bcp_colfmt para cada columna cuyo formato desea cambiar. Esto se realiza después de llamar a bcp_init pero antes de llamar a bcp_exec. bcp_colfmt especifica el formato con el que se almacenan los datos de la columna en el archivo de datos. Se puede usar al realizar la copia masiva dentro o fuera. También se puede usar bcp_colfmt para establecer los terminadores de columna y fila. Por ejemplo, si sus datos no contienen ningún carácter de tabulación, puede crear un archivo delimitado por tabuladores mediante bcp_colfmt para establecer el carácter de tabulación como el terminador de cada columna.

Cuando se realizan copias masivas fuera y se usa bcp_colfmt, se puede crear con facilidad un archivo de formato que describe el archivo de datos que ha creado llamando a bcp_writefmt después de la última llamada a bcp_colfmt.

Cuando se realizan copias masivas dentro desde un archivo de datos descrito por un archivo de formato, lea el archivo de formato llamando a bcp_readfmt después de bcp_init pero antes de bcp_exec.

La función bcp_control controla varias opciones cuando se realizan copias masivas en SQL Server desde un archivo de datos. bcp_control establece opciones, como el número máximo de errores antes de la finalización, la fila del archivo en la que desea iniciar la copia masiva, la fila en la que detenerse y el tamaño del lote.