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

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

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

SQLShack

SQL Server training English

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

October 29, 2016 by Steve Simon

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. 1234567 "C:\\SQLShack\\FASB_" +Right("0" + (DT_STR,4,1252) DatePart("m",getdate()),2) +Right("0" + (DT_STR,4,1252) DatePart("d",getdate()),2) + (DT_STR,4,1252) DatePart("yyyy",getdate()) + "_"+ (DT_STR,2,1252) DatePart("hh",getdate()) +"_"+ (DT_STR,2,1252) DatePart("n",getdate()) + ".csv" 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.
Acerca de Últimas entradas Steve SimonSteve 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 Últimas entradas de Steve Simon (ver todo) Procedimientos Recomendados para SQL Server Reporting Services - December 24, 2016 Excel cargando múltiples libros a SQL Server - December 24, 2016 Creando archivos CSV dinámicamente generados que contienen datos de SQL Server - October 29, 2016

Related posts

Respaldar y restaurar una base de datos SQL Server usando múltiples archivos Usando paquetes SSIS para importar datos de MS Excel en una base de datos Creando una estrategia de auditoría exitosa para sus bases de datos SQL Server Características de SQL Server Business Intelligence – Creando un Simple Cubo OLAP Cómo descargar e instalar el Asistente de Experimentación de Base de Datos de SQL Server (DEA) 15,747 Views

Follow us

Popular

Funciones y formatos de SQL Convert Date SQL Variables: Basics and usage Descripción general de la cláusula PARTITION BY de SQL Different ways to SQL delete duplicate rows from a SQL Table How to UPDATE from a SELECT statement in SQL Server SQL Server functions for converting a String to a Date SELECT INTO TEMP TABLE statement in SQL Server SQL WHILE loop with simple examples How to backup and restore MySQL databases using the mysqldump command Sentencia CASE en SQL Overview of SQL RANK functions Understanding the SQL MERGE statement INSERTAR EN SELECCIONAR la instrucción del resumen y ejemplos SQL multiple joins for beginners with examples Understanding the SQL Decimal data type ELIMINAR EN CASCADA y ACTUALIZAR CASCADA en la clave externa de SQL Server SQL Not Equal Operator introduction and examples SQL CROSS JOIN with examples The Table Variable in SQL Server Sugerencias de tabla de SQL Server – CON (NOLOCK) las mejores prácticas

Trending

SQL Server Transaction Log Backup, Truncate and Shrink Operations Six different methods to copy tables between databases in SQL Server How to implement error handling in SQL Server Working with the SQL Server command line (sqlcmd) Methods to avoid the SQL divide by zero error Query optimization techniques in SQL Server: tips and tricks How to create and configure a linked server in SQL Server Management Studio SQL replace: How to replace ASCII special characters in SQL Server How to identify slow running queries in SQL Server SQL varchar data type deep dive How to implement array-like functionality in SQL Server All about locking in SQL Server SQL Server stored procedures for beginners Database table partitioning in SQL Server How to drop temp tables in SQL Server How to determine free space and file size for SQL Server databases Using PowerShell to split a string into an array KILL SPID command in SQL Server How to install SQL Server Express edition SQL Union overview, usage and examples

Solutions

Read a SQL Server transaction logSQL Server database auditing techniquesHow to recover SQL Server data from accidental UPDATE and DELETE operationsHow to quickly search for SQL database data and objectsSynchronize SQL Server databases in different remote sourcesRecover SQL data from a dropped table without backupsHow to restore specific table(s) from a SQL Server database backupRecover deleted SQL data from transaction logsHow to recover SQL Server data from accidental updates without backupsAutomatically compare and synchronize SQL Server dataOpen LDF file and view LDF file contentQuickly convert SQL code to language-specific client codeHow to recover a single table from a SQL Server database backupRecover data lost due to a TRUNCATE operation without backupsHow to recover SQL Server data from accidental DELETE, TRUNCATE and DROP operationsReverting your SQL Server database back to a specific point in timeHow to create SSIS package documentationMigrate a SQL Server database to a newer version of SQL ServerHow to restore a SQL Server database backup to an older version of SQL Server

Categories and tips

Auditoría de SQL Server (4) Azure Data Studio (1) ►Características (8) Almacén de consultas (2) Bulk insert (3) Correo electrónico de base de datos (1) Replicación (2) Comandos SQL (11) Copias de seguridad y Restauración (2) Cursores SQL Server (2) ►Desarrollo de base de datos SQL (34) Desarrollo (1) Funciones (16) Procedimientos almacenados (3) Desarrollo profesional (2) ►Desarrollo profesional (1) Preguntas en entrevistas de SQL (1) ►Diseño de bases de datos (9) Expresiones de Tabla Común (1) Relaciones y dependencias (2) Restricciones (3) Tablas temporales (2) Tipos de datos (1) Diseño de bases de datos SQL (4) El registro de transacciones SQL (7) Funciones con cadenas (7) Importación, exportación (7) Índices (12) Instalación y configuración (6) ▼Inteligencia de negocios (14) Analysis Services (SSAS) (2) Excel (2) General (1) PowerBI (1) Reporting Services (SSRS) (1) ►Lenguajes y codificación (4) JSON (1) PowerShell (1) SQLCMD (2) Mantenimiento de SQL Server (11) Migración (2) ►Optimización de rendimiento SQL (47) Análisis de consultas (5) Índices (3) Interbloqueos (2) Monitoreo (7) Performance (6) Planes de ejecución (5) Reportes (1) Paquetes SSIS (10) Particionamiento de SQL Server (2) Recuperación de SQL (8) Seguridad de SQL Server security (2) SQL Azure (6) SQL Server 2012 (1) SQL Server 2016 (13) SQL Server 2017 (1) SQL Server Management Studio (21) T-SQL (22) Utilidades (1) Helpers and best practices BI performance counters SQL code smells rules SQL Server wait types © 2022 Quest Software Inc. ALL RIGHTS RESERVED. GDPR Terms of Use Privacy
Share:
0 comments

Comments (0)

Leave a Comment

Minimum 10 characters required

* All fields are required. Comments are moderated before appearing.

No comments yet. Be the first to comment!