Cómo copiar datos de forma masiva desde variables de programa (ODBC)

Hay un ejemplo que muestra cómo utilizar las funciones de copia masiva para copiar datos de forma masiva de variables de programa a SQL Server utilizando bcp_bind y bcp_sendrow. (Se ha quitado el código de comprobación de errores para simplificar el ejemplo.)

El ejemplo de código completo se encuentra en el archivo BulkCopyFromVariables.cpp, que puede descargar en la página de ejemplos de código de SQL Server. Este ejemplo se desarrolló utilizando Microsoft Visual C++ 2005 para ODBC versión 3.0 o posterior.

Nota de seguridad   Siempre que sea posible, utilice la autenticación de Windows. Si la autenticación de Windows no está disponible, solicite a los usuarios que escriban sus credenciales en tiempo de ejecución. No guarde las credenciales en un archivo. Si tiene que conservar las credenciales, debería cifrarlas con la CryptoAPI de Win32.

Para usar las funciones de copia masiva directamente en variables de programa

  1. Asigne un identificador de entorno y un identificador de conexión.

  2. Establezca SQL_COPT_SS_BCP y SQL_BCP_ON para habilitar las operaciones de copia masiva.

  3. Conéctese a SQL Server.

  4. Llame a bcp_init para establecer la siguiente información:

    • El nombre de la tabla o vista desde la que se realizará la copia masiva o en la que se realizará la copia masiva.

    • Especifique NULL para el nombre del archivo de datos.

    • El nombre de un archivo de datos donde recibir cualquier mensaje de error de la copia masiva (especifique NULL si no desea ningún archivo de mensajes).

    • La dirección de la copia: DB_IN de la aplicación a la vista o tabla o DB_OUT a la aplicación desde la tabla o vista.

  5. Llame a bcp_bind para que cada columna de la copia masiva enlace la columna a una variable de programa.

  6. Rellene de datos las variables de programa y llame a bcp_sendrow para enviar una fila de datos.

  7. Una vez que se hayan enviado varias filas, llame a bcp_batch para establecer puntos de comprobación en las filas ya enviadas. Es recomendable llamar a bcp_batch por lo menos una vez cada 1000 filas.

  8. Una vez enviadas todas las filas, llame a bcp_done para completar la operación.

Puede cambiar la ubicación y la longitud de las variables de programa durante una operación de copia masiva llamando a bcp_colptr y bcp_collen. Utilice bcp_control para establecer varias opciones de copia masiva. Use bcp_moretext para enviar datos text, ntext y image en segmentos al servidor.