Utilizar archivos de datos y archivos de formato

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

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

  1. Llama a bcp_init para especificar la copia masiva (establecer BCP_OUT) desde una tabla o vista a 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 solamente funciona si las tablas de destino y origen tienen exactamente la misma estructura. El archivo de datos resultante también puede escribirse en la utilidad bcp mediante el modificador /n (modo nativo).

Para copiar de forma masiva el conjunto de resultados de una instrucción Transact-SQL en lugar de directamente desde una tabla o vista:

  1. Llame a bcp_init para especificar la 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 contenga 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. El archivo de datos se crea 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.

Para crear un archivo de datos en el que los datos de columna se almacenan en un formato diferente al de 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 desee cambiar. Esto se hace después de llamar a bcp_init , pero antes de llamar a bcp_exec. bcp_colfmt especifica el formato en el que se almacenan los datos de la columna en el archivo de datos. Se puede usar al copiar de forma masiva dentro o fuera. También puede usar bcp_colfmt para establecer los terminadores de fila y columna. Por ejemplo, si los datos no contienen caracteres de tabulación, puede crear un archivo delimitado por tabulaciones mediante bcp_colfmt para establecer el carácter de tabulación como terminador para cada columna.

Al copiar de forma masiva y usar bcp_colfmt, puede crear fácilmente un archivo de formato que describa el archivo de datos que ha creado llamando a bcp_writefmt después de la última llamada a bcp_colfmt.

Al copiar en bloque 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 al copiar en bloque 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 el que se va a iniciar la copia masiva, la fila en la que se detendrá y el tamaño del lote.

Consulte también

Realizar operaciones de copia masiva (ODBC)