Steve Simon

Creando archivos CSV dinámicamente generados que contienen datos de SQL Server

October 29, 2016 by

Introducción

Unos pocos meses atrás hice una presentación en SQL Saturday 327 en Johannesburgo, Sudáfrica. El mes pasado recibí un correo electrónico de uno de los participantes. Su problema era muy interesante y decidí compartirlo con usted. El señor quería un script SSIS que le permitiría extraer datos desde una base de datos SQL Server y colocarlos en un archivo CSV con un nombre asignado dinámicamente. Siendo un partidario de usar la caja de herramientas SSIS, experimenté con una solución alternativa. Vamos a construir ESTA SOLUCIÓN hoy.

Comencemos.

Iniciando

Como punto de partida, de nuevo usaremos nuestra base de datos “SQLShackFinancial”. Utilizaremos datos de la tabla FASB (ver abajo).

Nuestra meta final es obtener la siguiente salida:

El lector astuto notará que el nombre del archivo csv contiene la fecha y la hora en las cuales el archivo fue creado.

Abriendo Visual Studio, comenzamos creando un nuevo proyecto de Integration Services.

Seleccionamos New y Project (ver arriba).

Seleccionamos un proyecto de Integration Services y le damos a nuestro proyecto un nombre. Hacemos clic en OK para crear el proyecto.

Nos encontramos en nuestro espacio de trabajo del proyecto de Integration Services (ver arriba).

Nuestra primera tarea es crear una conexión de datos para nuestra base de datos SQLShackFinancial.

Creando la conexión de base de datos

Comenzamos haciendo clic derecho en la caja “Connection manager” y seleccionando “New OLE DB Connection” (ver arriba).

El diálogo “Configure OLE DB Connection Manager” es mostrado. Seleccionamos “New” (ver arriba).

El diálogo “Connection Manager” es ahora mostrado y configuramos este diálogo como se muestra arriba.

Probando la conexión, vemos que estamos listos para seguir adelante.

Ahora añadimos un Data Flow Task a nuestra superficie de trabajo (ver abajo).

Haciendo doble clic en “Data Flow Task” somos enviados al diseñador “Data Flow Task” (ver abajo).

Ahora añadimos “OLE DB Data Source” a nuestra superficie de trabajo (ver abajo).

Hacer doble clic en “Ole DB Source” abre el diálogo “OLE DB Source”.

Configuramos nuestro administrador de conexiones para apuntar a la tabla FASB (ver arriba).

La pestaña de columnas muestra las columnas de datos dentro de la tabla (ver arriba).

Añadir y configurar el archivo de destino csv

Ahora estamos en posición de añadir el archivo plano de destino que contendrá los datos de la tabla en un formato csv.

Arrastramos un control “Flat File Destination” a nuestra superficie de trabajo (ver arriba) y combinamos la fuente de datos “OLE DB” al destino “Flat File” (ver abajo).

Hacer doble clic en el control abre el editor “Flat File Destination” (ver arriba). Hacemos clic en “New” para crear una nueva conexión.

El diálogo “Flat File Format” es abierto en la vista (ver abajo y a la izquierda). Aceptamos con el botón “Delimited”. Haga clic en OK.

“Flat File Connection Manager Editor” es abierto. Se pide una Descripción (la cual es opcional), pero, de manera más importante, se pide un nombre para el archivo de salida.

Le damos al archivo de salida el nombre “FASB_” y establecemos su tipo a csv (ver arriba). Hacemos clic en “Open”.

Haciendo clic en la pestaña “Columns”, vemos que los campos de nuestra tabla son visibles. Hacemos clic en OK para salir de este diálogo y luego clic en la pestaña “Mappings” para configurar la fuente al destino (ver abajo).

Hacemos clic en OK para salir de “Flat File Destination Editor”.

Nos encontramos ahora de vuelta en nuestra superficie de trabajo. EL PROBLEMA es que creando el archivo plano csv, hemos fijado el nombre del archivo y eso NO es lo que queremos..

Creando un nombre de archivo dinámico para nuestro archivo de salida

Comenzamos haciendo clic derecho en nuestra conexión de archivo de salida y abriendo “Properties” (ver arriba y abajo a la derecha).

Nos desplazamos hacia abajo para encontrar la propiedad “Expressions” (ver arriba y abajo a la derecha).

Seleccionamos la Propiedad “Connectionstring” de la lista desplegable “Property” (ver arriba) y hacemos clic en la caja “Expression”.

El diálogo “Expression Builder” es traído a la vista (ver arriba).

En la caja “Expression”, ingresamos el siguiente retazo de código. Añadir un componente de tiempo (a la cadena) nos permite producir múltiples extracciones diarias.

El lector astuto notará que cuando “Evaluamos” la expresión (ver arriba), el nombre completo del archivo aparece en la caja “Evaluated box”. Más adelante debemos notar el uso de dos “\\” por cada uno que queremos que aparezca en la ruta “Evaluada” del archivo. ¡Los programadores de FORTRAN y COBOL recordarán esto!

Hacemos clic en OK para dejar “Expression Builder” y OK para dejar “Property Expressions Editor” (ver arriba).

Nos encontramos de vuelta en nuestra superficie de trabajo (ver arriba).

Demos a nuestro paquete un “giro”

Hacemos clic en la pestaña “Debug” en la cinta superior y seleccionamos “Start Debugging” (ver arriba).

El proceso se completa exitosamente.

Nuestro archivo extraído puede ser visto en la pantalla de arriba. Note que el nombre del archivo contiene la fecha de ejecución y el tiempo del proceso.

Abriendo el archivo delimitado por comas en Notepad, vemos los datos separados por comas.

Conclusión

A menudo nos encontramos con que tenemos procesos externos que requieren extracciones de datos desde nuestras tablas. En algunos casos, el formato final debe ser CSV.

En esta ocasión hemos construido un proceso rápido para recuperar datos desde una tabla de base de datos y colocar los datos en un archivo csv plano EN ADICIÓN a proveer un mecanismo para correr el proceso a través del día.

Si desea el código para este artículo, por favor contacte al editor de SQLShack o a mí.

Mientras tanto, feliz programación.


Steve Simon
Inteligencia de negocios

Acerca de Steve Simon

Steve Simon es un MVP de SQL Server y un Ingeniero de Desarrollo de Business Inteligence senior con Atrion Networking. Él ha estado involucrado con el diseño de bases de datos y análisis por cerca de 29 años. Steve ha hecho presentaciones en 8 PASS Summits y una en PASS Europe 2009 y 2010. Él ha presentado recientemente una presentación de Master Data Services en PASS Amsterdam Rally. Steve ha hecho 5 presentaciones en Information Builders’ Summits. Él es un mentor regional de PASS. Ver todas las entradas de Steve Simon

168 Views