Published on

August 30, 2017

Introducción a BCP en SQL Server

BCP (Bulk Copy Program) es una poderosa herramienta utilizada para importar y exportar datos en SQL Server. Te permite transferir eficientemente grandes cantidades de datos entre SQL Server y archivos u otras bases de datos. En este artículo, exploraremos los conceptos básicos de BCP y cómo utilizarlo de manera efectiva.

Requisitos

Para utilizar BCP, necesitarás una máquina local con BCP 13.1 o una versión posterior instalada. BCP está disponible tanto para Windows como para Linux, pero nos enfocaremos en la versión de Windows para este artículo. Además, necesitarás acceso a un Azure SQL Data Warehouse (ASDW) con una base de datos como Adventureworks LT.

Empezando

Antes de adentrarnos en los ejemplos, verifiquemos la versión de BCP instalada en tu máquina. Abre la línea de comandos y ejecuta el siguiente comando:

bcp -v

El número de versión indicará qué versión de SQL Server tienes instalada. Para obtener más información sobre las diferentes versiones, puedes consultar la documentación oficial.

Ahora, veamos un ejemplo de cómo exportar datos de una tabla de Azure SQL Data Warehouse a un archivo utilizando BCP:

bcp sqlcentralwarehouse.dbo.dimdate out c:\sql\dates.dat -S sqlcentralserver.database.windows.net -U Daniel -P MySecretpwd012 -n –q

En este ejemplo, estamos exportando los datos de la tabla “dbo.dimdate” en la base de datos “sqlcentralwarehouse” a un archivo llamado “dates.dat” en nuestra máquina local. El parámetro “-S” especifica el nombre del servidor de Azure, “-U” especifica el nombre de usuario, “-P” especifica la contraseña, “-n” realiza la operación en formato nativo y “-q” maneja identificadores entre comillas.

Si todo es exitoso, encontrarás el archivo exportado “dates.dat” en el directorio especificado en tu máquina local.

BCP con Contraseña Solicitada

En el ejemplo anterior, la contraseña se especificó en texto plano. Sin embargo, por razones de seguridad, se recomienda evitar exponer contraseñas en texto plano. En su lugar, puedes solicitar la contraseña durante la operación de BCP. Aquí tienes un ejemplo:

bcp sqlcentralwarehouse.dbo.dimdate out c:\sql\dates.dat -S sqlcentralserver.database.windows.net -U Daniel -n –q

En este ejemplo, no estamos especificando el parámetro “-P” para la contraseña. En su lugar, BCP te solicitará que ingreses la contraseña manualmente.

Trabajando con Indicaciones en BCP

BCP te permite aplicar indicaciones para controlar el comportamiento de la operación de importación o exportación. Las indicaciones se pueden utilizar para especificar el orden de las columnas, el número de filas por lote o para bloquear la tabla durante la operación. Aquí tienes un ejemplo de cómo utilizar la indicación “TABLOCK” para bloquear la tabla mientras se realiza la operación de BCP:

bcp sqlcentralwarehouse.dbo.dimdate out c:\sql\dates.dat -S sqlcentralserver.database.windows.net -U Daniel -n -q -h TABLOCK

Esta indicación puede mejorar el rendimiento cuando se trabaja con tablas grandes y múltiples usuarios concurrentes acceden a la tabla.

Limitando Filas en BCP

También puedes limitar el número de filas exportadas o importadas utilizando BCP. Por ejemplo, para exportar solo las primeras 10 filas de una tabla, puedes utilizar el parámetro “-L”:

bcp sqlcentralwarehouse.dbo.dimdate out c:\sql\firstten.dat -S sqlcentralserver.database.windows.net -U Daniel -n –q -L10

Esto exportará los datos de la tabla “dbo.dimdate” hasta la décima fila y los guardará en el archivo especificado.

Exportando Filas Específicas

Si deseas exportar un rango específico de filas de una tabla, puedes utilizar los parámetros “-F” (Primera) y “-L” (Última). Aquí tienes un ejemplo:

bcp sqlcentralwarehouse.dbo.dimdate out c:\sql\firstten.dat -S sqlcentralserver.database.windows.net -U Daniel -n –q -F10 -L20

Esto exportará los datos desde la décima fila hasta la vigésima fila de la tabla “dbo.dimdate” y los guardará en el archivo especificado.

Exportando Consultas a un Archivo

BCP también te permite trabajar con consultas y exportar los resultados a un archivo. Aquí tienes un ejemplo:

bcp "SELECT [EnglishMonthName],[FiscalYear],[FiscalSemester] FROM dbo.dimdate" queryout c:\sql\firstten.dat -d sqlcentralwarehouse -S sqlcentralserver.database.windows.net -U Daniel -n –q

En este ejemplo, estamos ejecutando una consulta en la tabla “dbo.dimdate” en Azure y exportando los resultados al archivo especificado.

Trabajando con Lotes en BCP

Cuando se trabaja con una gran cantidad de datos, puedes utilizar BCP para exportar o importar datos en lotes. El parámetro “-b” se utiliza para especificar el tamaño del lote. Aquí tienes un ejemplo:

bcp "SELECT [EnglishMonthName],[FiscalYear],[FiscalSemester] FROM dbo.dimdate" queryout c:\sql\firstten.dat -d sqlcentralwarehouse -S sqlcentralserver.database.windows.net -U Daniel -n –q -b100

En este ejemplo, estamos exportando los resultados de la consulta en lotes de 100 filas. Esto puede mejorar el rendimiento y reducir el uso de memoria cuando se trabaja con conjuntos de datos grandes.

Archivos de Error en BCP

BCP te permite crear archivos de error que capturan cualquier fila que no se haya podido transferir durante la operación de importación o exportación. Puedes utilizar el parámetro “-e” seguido de la ruta para especificar el archivo de error. Aquí tienes un ejemplo:

bcp "SELECT [EnglishMonthName],[FiscalYear],[FiscalSemester] FROM dbo.dimdate" queryout c:\sql\firstten.dat -d sqlcentralwarehouse -S sqlcentralserver.database.windows.net -U Daniel -n –q -b100 -e c:\sql\error.log

En este ejemplo, cualquier fila que encuentre errores durante la operación de BCP se registrará en el archivo de error especificado.

Importando desde un Archivo a una Tabla de Azure

BCP también se puede utilizar para importar datos desde un archivo a una tabla de Azure. Primero, necesitas crear una tabla en Azure. Aquí tienes un ejemplo de cómo crear una tabla utilizando el Editor de Consultas:

CREATE TABLE [dbo].[ImpDate]
(
[EnglishMonthName] [nvarchar](10) NOT NULL,
[FiscalYear] [smallint] NOT NULL,
[FiscalSemester] [tinyint] NOT NULL
)

Una vez creada la tabla, puedes utilizar BCP para importar datos desde un archivo. Aquí tienes un ejemplo:

bcp sqlcentralwarehouse.dbo.ImpDate in c:\sql\firstten.dat -n -U daniel -S sqlcentralserver.database.windows.net -q

En este ejemplo, estamos importando los datos del archivo “firstten.dat” a la tabla “dbo.ImpDate” en Azure.

Conclusión

BCP es una herramienta poderosa para importar y exportar datos en SQL Server. Si bien puede no ser la herramienta más intuitiva para principiantes, ofrece un gran rendimiento y flexibilidad para usuarios experimentados. Ya sea que necesites transferir datos entre SQL Server y archivos u otras bases de datos, BCP es una opción confiable.

Referencias:

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.