Índice

La herramienta BCP BCP

BCP (Bulk Copy Program) es una potente herramienta de línea de comandos. Es muy conocida entre los usuarios de las versiones anteriores de SQL Server. Se utiliza cuando el volumen de las transferencias entre archivos de texto y la base SQL Server es elevado.

BCP permite exportar los datos de una tabla o de una consulta SQL hacia un archivo de texto o bien importar un archivo de texto en una tabla. Cuando se utilice, es necesario precisar la fuente y el destino de los datos, así como un nombre de usuario y una contraseña para conectarse al servidor.

La utilización de BCP no necesita un dominio especial de Transact SQL, salvo en caso de que la exportación se base en una consulta SQL. Por el contrario, la descripción del archivo de datos es un requisito obligatorio.

1. La sintaxis

Al principio puede parecer algo pesada, pero es posible fijar muchas opciones, lo que añade mucha flexibilidad cuando se usa bcp.

bcp {nombre_completo_objeto|"consulta"} 
{in|out|queryout|format} archivo_de_datos 
[-m máximo_de_errores] [-f archivo_de_formato] [-x] 
[-e archivo_de_errores] [-d nombreBaseDatos] 
[-F primera_línea] [-L última_línea] 
[-b tamaño_del_lote_de_instrucciones] 
[-n]  [-c]  [-w]  [-N]  [-V {80|90|100}] [-q]  [-n] 
[-C página_de_código] 
[-t fin_de_campo] [-rfin_de_línea] 
[-i archivo_de_entrada] [-o archivo_de_salida] 
[-a tamaño_del_paquete] [-k ReadOnly] 
[-S nombre_del_servidor] [-U id_conexión] 
[-P contraseña] [-q] 
[-T] [-v] [-R] [-k] [-E] [-h "opción [,...n]"] 
nombre_completo_objeto|"consulta"

Se trata de dar el nombre completo del objeto (tabla o vista) o una consulta cuyo resultado se exportará a un archivo.

En una exportación es posible tomar como objeto una tabla, una vista o solicitar la ejecución de una consulta. Los usuarios deben tener los derechos de selección apropiados.

En caso de una importación de datos, no se puede realizar a través de una consulta. Algunas veces es posible realizar las inserciones a través de una vista. Para ello se deben tomar algunas precauciones en el momento de la definición de la vista última. Durante la importación es necesario que el usuario sea miembro del rol db_owner.

{in|out|queryout|format} archivo_de_datos

Las opciones indicadas son una operación de exportación (out) o importación (in) de datos. Si se especifica una consulta en lugar de un nombre de objeto, hay que utilizar queryout. Por último, format permite crear un archivo de formato siguiendo las opciones especificadas; se podrá usar la opción f.

Las otras opciones permiten ajustar el tipo del archivo (texto...), los delimitadores de campos y de líneas...

-S, -U, -P y -T

Estas cuatro opciones se encuentran en numerosas herramientas de línea de comandos tales como isql. Permiten conectarse a un servidor SQL y abrir una conexión. El nombre del servidor lo indica la opción -S. Además, es posible abrir una sesión utilizando una autenticación de Windows (-T) o una autenticación de SQL Server. Es necesario proporcionar el nombre de la conexión (-U) y la contraseña (-P).

2. El uso de bcp en modo interactivo

Si cuando se ejecuta el comando bcp no se especifica alguna de las siguientes opciones (-n, -c, -w o N), entonces la herramienta pregunta de manera interactiva al usuario.

images/622-bcp1.png

En el ejemplo anterior, los datos contenidos en la tabla articulos de la base GESCOM se exportan al archivo articulos.txt. Gracias a la opción -c, los datos se exportan en modo carácter. La base se almacena en el servidor IvanMDW81 y se utiliza una autenticación Windows (opción -T) para conectarse al servidor.

images/622-bcp2.png

En el siguiente ejemplo, el resultado de una consulta se exporta a un archivo de datos.

images/622-bcp3.png

Utilización de bcp en modo interactivo

Durante la importación de datos con las herramientas de copia por bloques (bcp y bulk copy), se deshabilitan los triggers de tipo instead of e insert. Es posible solicitar su ejecución eliminando la opción FIRE TRIGGERS. En este caso hay que asegurarse de que los triggers son capaces de tratar un conjunto de registros, ya que solo se habilitan una vez por bloque. FIRE TRIGGERS

Para facilitar la descripción de los datos, es posible utilizar un archivo de formato. Si no existe durante la primera importación, bcp pregunta con el objetivo de generar el archivo de formato bcp. ...