SlideShare una empresa de Scribd logo
Método SQL para Comprimir Archivos de Carga de
Datos.
Utilización de T-SQL para mejorar la administración de ficheros utilizados
para cargar información.
Fecha: Agosto del 2013.
Versión: 1.0
Autor: Sebastián Rodríguez Robotham
e-mail: srodriguez@easybi.cl
Método SQL para Comprimir Archivos de Carga de Datos
Sebastián Rodríguez Robotham. www.EasyBI.cl 2 | P a g e
Introducción.
En ambientes de DataWarehouse, debemos interactuar con una gran cantidad de ficheros en
forma periódica, estos ficheros son descargados desde diversas fuentes para luego cargarlos a
nuestro ambiente de base de datos SQL Server. Sin embargo, muchas veces estos ficheros quedan
alojados eternamente en las rutas de carga y no son administrados en forma eficiente,
consumiendo grandes cantidades de espacio en nuestros discos duros.
El objetivo de este documento es entregar una forma simple y eficiente de mejorar la
administración de estos ficheros a través compresión de archivos en formato RAR, todo esto
ejecutado directamente con procedimientos almacenados de SQL Server, sin intervención de
herramientas adicionales, dado que en muchas empresas no existen recursos para adquirir
herramientas especializadas en este tipo de tareas, o simplemente no queremos incluir otros
utilitarios que hagan más complicado nuestro entorno analítico.
En el anexo 1 está la información de configuración requerida en SQL Server y Windows para
implementar correctamente esta solución.
Problema.
Supongamos que tenemos un sistema de DataWarehouse implementado bajo la plataforma SQL
Server versión 2008R2 o superior. Este sistema descarga información diaria desde un origen de
datos FTP que pesa aproximadamente 2GB por día (llamaremos a este archivo
VentasYYYYMMDD.TXT, donde YYYY es el año, MM es el mes y DD es el día), y luego lo aloja en
nuestro servidor de base de datos para realizar una carga de tipo Bulk. Una buena práctica es
almacenar los archivos de origen, dado que si por algún motivo necesitamos reprocesar nuestro
ambiente de DW deberemos realizar nuevamente la carga de datos desde estos ficheros. Por
tanto si requerimos almacenar al menos un año de información histórica de archivos diarios, hará
que necesitemos solo para este proceso, un disco de al menos 730GB, lo que claramente es
ineficiente.
Solución.
La solucionar óptima para este requerimiento es comprimir los archivos históricos y administrarlos
en un ambiente distinto, pudiendo ser desde unidades de discos independientes en el mismo
servidor, o mejor aún en servidores distintos, para ello necesitamos, de alguna forma, tomar los
ficheros desde el servidor de base de datos, comprimirlos en la nueva unidad y eliminar los
archivos sin comprimir. Como estrategia para facilitar la administración de estos ficheros,
generaremos archivos comprimidos en forma mensual, ya que de esa forma no tendremos tantos
ficheros independientes.
Método SQL para Comprimir Archivos de Carga de Datos
Sebastián Rodríguez Robotham. www.EasyBI.cl 3 | P a g e
Para llevar a cabo esto utilizando solamente T-SQL, deberemos crear el siguiente procedimiento
almacenado que realiza esta tarea en forma muy sencilla:
Figura 1. Código del Procedimiento Almacenado PA_Control_GeneraArchivoZip
Lo que realiza este procedimiento es generar un script de ejecución de una simple sentencia RAR,
indicando la ruta y nombre de los archivos a comprimir, la ruta y nombre del archivo destino y
parámetros opcionales, como por ejemplo eliminar o no los archivos origen, e incluir o no el path
completo de los ficheros.
Finalmente, a través del comando XP_CmdShell ejecutamos dicho script, esto es similar a ejecutar
cualquier comando vía CMD de Windows.
Invocación del Procedimiento Almacenado.
La invocación básica se realizaría de la siguiente forma:
Figura 2. Ejecución del Procedimiento Almacenado PA_Control_GeneraArchivoZip
Una observación importante a tener en cuenta es que el segundo parámetro, cuando el nombre
del archivo a comprimir tiene espacios, hay que incluir las comillas dobles (“), de lo contrario el
comando RAR pensará que son parámetros y no lo reconocerá, por tanto no realizará la
compresión del archivo.
Método SQL para Comprimir Archivos de Carga de Datos
Sebastián Rodríguez Robotham. www.EasyBI.cl 4 | P a g e
Ejemplo de Implementación.
Siguiendo el escenario planteado inicialmente, implementaremos la rutina para comprimir
diariamente los ficheros que han sido procesados, la siguiente imagen muestra un directorio con
los archivos históricos a comprimir:
Figura 3. Listado de Ficheros a Comprimir
La carpeta “Demo” contiene los ficheros descargados desde una fuente FTP y procesados en el
DataWarehouse, y la carpeta “DemoComprime” contendrá los ficheros comprimidos.
Para realizar la compresión, deberemos ejecutar el siguiente script, que recibe como parámetro la
fecha del proceso diario.
Figura 4. Script para Automatizar Proceso de Compresión de Ficheros.
Método SQL para Comprimir Archivos de Carga de Datos
Sebastián Rodríguez Robotham. www.EasyBI.cl 5 | P a g e
Una vez ejecutado el script, revisamos que en el directorio “DemoComprime” existe un nuevo
archivo con los ficheros diarios, como lo muestra la siguiente figura:
Figura 5. Listado de Ficheros comprimidos por el Script
Al ejecutarlo por segunda vez con parámetro “2012-01-15”, comprimirá los ficheros de enero,
dejando solamente los ficheros de marzo disponibles, tal como lo muestra la figura siguiente:
Figura 6. Listado de Ficheros sin Comprimir
Método SQL para Comprimir Archivos de Carga de Datos
Sebastián Rodríguez Robotham. www.EasyBI.cl 6 | P a g e
Finalmente, podemos mejorar el script inicial, creando un procedimiento almacenado que reciba
como parámetro una fecha, e incluir este nuevo procedimiento en SQL Agent para que la tarea
quede 100% automatizada, la siguiente figura muestra el código SQL final.
Figura 7. Procedimiento Almacenado para la Automatización de Compresión de Archivos.
Conclusiones Finales
Este método permite automatizar en forma fácil y eficiente la administración de ficheros que son
utilizados por SQL para cargar información.
Como principales ventajas frente a otras alternativas, podemos destacar:
a. Lo simple de implementar para personas que tienen conocimientos medios de T-SQL.
b. No requiere intervención de utilitarios adicionales, solamente WinRAR
c. No requiere ningún tipo de inversión adicional en términos monetarios (frente a otras
soluciones comerciales)
d. 100% adaptable: podemos agregar complejidad y lógicas de negocios a este código en
forma bastante sencilla, frente a otras herramientas cerradas que no permiten
modificaciones de los parámetros preestablecidos.
Método SQL para Comprimir Archivos de Carga de Datos
Sebastián Rodríguez Robotham. www.EasyBI.cl 7 | P a g e
Anexo 1. Requisitos para la implementación de la solución.
A continuación se presentan los pasos a seguir para asegurar la correcta implementación de esta
solución.
Habilitar RAR en Windows
Para utilizar esta solución no basta con instalar el componente WinRAR en el computador o
servidor, hay que habilitar la ruta para que pueda ser accedida desde la consola, cuando no está
hecho esto, aparecerá el siguiente mensaje al intentar ejecutarlo:
Figura 8. Pantalla CMD con error de Rar no encontrado.
Pasos a seguir para incluir la ruta en el Path de Windows (versión 7)
a. Clic en menú inicio, luego clic derecho sobre “Equipo”, seleccionar menú “Propiedades”
Figura 9. Pantallas Windows para Configurar path, paso a
Método SQL para Comprimir Archivos de Carga de Datos
Sebastián Rodríguez Robotham. www.EasyBI.cl 8 | P a g e
b. Una vez en la pantalla, dar clic en “configuración avanzada del Sistema”, aparecerá las
propiedades del sistema, dar clic en “Variables de Entorno”
Figura 10. Pantallas Windows para Configurar path, paso b
c. Buscar en “variables del sistema” la variable “Path”, y dar clic en “Editar”.
Figura 11. Pantallas Windows para Configurar path, paso c
Método SQL para Comprimir Archivos de Carga de Datos
Sebastián Rodríguez Robotham. www.EasyBI.cl 9 | P a g e
d. En el campo “Valor de la variable”, agregar al final la ruta encontrada para los archivos de
la aplicación RAR, como aparecen en la siguiente figura
Figura 12. Pantallas Windows para Configurar path, paso d
e. Dar clic en aceptar y cerrar todas las ventanas
Para que SQL Server pueda aceptar los cambios en la variable Path, se deben reiniciar los servicios
de SQL Server o reiniciar el servidor.
Habilitar comando XP_CmdShell en SQL Server
Por default la opción de XP_CmdShell viene deshabilitada en SQL Server, por tanto hay que
habilitarla manualmente, para ello seguir los siguientes pasos:
a. En Management Studio, clic derecho sobre el servidor de base de datos, seleccionar la
opción “Facets”
Figura 13. Pantallas SQL Server para Configurar XP_CmdShell, paso a
Método SQL para Comprimir Archivos de Carga de Datos
Sebastián Rodríguez Robotham. www.EasyBI.cl 10 | P a g e
b. Dentro del área de “Facets”, seleccionar “Surface Area Configuration”, como muestra la
siguiente figura.
Figura 14. Pantallas SQL Server para Configurar XP_CmdShell, paso b
c. Una vez desplegada la lista de opciones en “Surface Area Configuration”, ubicar al final de
la grilla la opción “XPCmdShellEnabled”, y setear en “True”
Figura 15. Pantallas SQL Server para Configurar XP_CmdShell, paso c
Finalmente, dar “OK” a todas las ventanas.
Método SQL para Comprimir Archivos de Carga de Datos
Sebastián Rodríguez Robotham. www.EasyBI.cl 11 | P a g e
Anexo 2. Código SQL PA_Control_GeneraArchivoZIP
ALTER PROCEDURE PA_Control_GeneraArchivoZip
@DirectorioOrigen varchar(150)
,@ArchivosOrigen varchar(150)
,@DirectorioDestino varchar(150)
,@NombreComprimido varchar(150)
,@Password varchar(150)
,@IncluyePath int
,@EliminaArchivosOrigen int
WITH ENCRYPTION
AS
--Variable
DECLARE @Script varchar(8000) = ''
--Sintaxis para correr RAR
SET @Script = 'rar a -y'
+ case when @IncluyePath = 0 then ' -ep ' else ' -ep2 ' end
+ case when @EliminaArchivosOrigen = 1 then ' -df ' else ' ' end
+ case when len(@Password) >= 1 then ' -p' + @Password + ' ' else ' ' end
+ '' + @DirectorioDestino + '' + @NombreComprimido + ' ' +
@DirectorioOrigen + '' + @ArchivosOrigen
--Ejecución de RAR
EXEC XP_CmdShell @Script , NO_OUTPUT
Anexo 3. Código SQL PA_ComprimeFicheroVentas
CREATE PROCEDURE PA_ComprimeFicherosVenta
@Periodo_Id DATE
WITH ENCRYPTION
AS
--Periodo indica la fecha del día que se procesa
--Podría ser GetDate(), pero se deja paramétrico para convertir a SP
--DECLARE @Periodo_Id DATE = '2012-01-15'
--Se obtiene mes y año en formato texto,
--el mes debes ser de dos dígitos, ejemplo "02" para febrero
DECLARE @Mes VARCHAR(2) = RIGHT('0' + CONVERT(VARCHAR,Month(@Periodo_Id)),2)
,@Ano VARCHAR(4) = CONVERT(VARCHAR,Year(@Periodo_Id))
--Asigna los nombres de los archivos a comprimir y nombre del archivo destino
DECLARE @ArchivosOrigen VARCHAR(100) = 'Ventas' + @Ano + @Mes + '*.*'
,@RarDestino VARCHAR(100) = 'VentasRAR' + @Ano + @Mes
--Ejecuta el procedimiento almacenado que comprime
EXEC PA_Control_GeneraArchivoZip 'D:DEMO' -- @DirectorioOrigen
,@ArchivosOrigen -- @ArchivosOrigen
,'D:DEMOCOMPRIME' -- @DirectorioDestino
,@RarDestino -- @NombreComprimido
,'' -- @Password
,0 -- @IncluyePath
,1 -- @EliminaArchivosOrigen

Más contenido relacionado

La actualidad más candente

Procesadores de texto Power Point
Procesadores de texto Power Point Procesadores de texto Power Point
Procesadores de texto Power Point
Abiel Jimenez
 
Presentador digital
Presentador digitalPresentador digital
Presentador digital
pinesan
 
Ejercicio seguridad en redes
Ejercicio seguridad en redesEjercicio seguridad en redes
Ejercicio seguridad en redes
vverdu
 
Mantenimiento preventivo y correctivo de software.
Mantenimiento preventivo y correctivo de software.Mantenimiento preventivo y correctivo de software.
Mantenimiento preventivo y correctivo de software.
AnasusAlarcon
 
Tarea de infotecnología para el aprendizaje, unidad IV (power point).
Tarea de infotecnología para el aprendizaje, unidad IV (power point).Tarea de infotecnología para el aprendizaje, unidad IV (power point).
Tarea de infotecnología para el aprendizaje, unidad IV (power point).
LourdesMartinezCasti
 
Rmi
RmiRmi
Comandos de Linux
Comandos de Linux Comandos de Linux
Comandos de Linux
Elver Enriquez Quintero
 
TeamViewer Vs. AnyDesk
TeamViewer Vs. AnyDeskTeamViewer Vs. AnyDesk
TeamViewer Vs. AnyDesk
Kevin SacÖn Carranza
 
Diseño de Entradas
Diseño de EntradasDiseño de Entradas
Diseño de Entradas
JHector Bl
 
2014-2 Tema 2. Sniffer y Monitores
2014-2 Tema 2. Sniffer y Monitores2014-2 Tema 2. Sniffer y Monitores
2014-2 Tema 2. Sniffer y Monitores
Francisco Medina
 
Tabla modelo osi
Tabla modelo osiTabla modelo osi
Tabla modelo osifeli506
 
Dns diapositivas
Dns diapositivas Dns diapositivas
Dns diapositivas Taringa!
 
Que es un presentador grafico
Que es un presentador graficoQue es un presentador grafico
Que es un presentador grafico
Marcovis
 
diapositivas de windows 8
diapositivas de windows 8diapositivas de windows 8
diapositivas de windows 8caarlos204
 
Introducción a la administración de Redes
Introducción a la administración de RedesIntroducción a la administración de Redes
Introducción a la administración de Redes
RadioComunicaciones UTPL
 

La actualidad más candente (20)

INTERNET INFORMATION SERVICES (IIS)
INTERNET INFORMATION SERVICES (IIS)INTERNET INFORMATION SERVICES (IIS)
INTERNET INFORMATION SERVICES (IIS)
 
RMI
RMIRMI
RMI
 
Procesadores de texto Power Point
Procesadores de texto Power Point Procesadores de texto Power Point
Procesadores de texto Power Point
 
Presentador digital
Presentador digitalPresentador digital
Presentador digital
 
Ejercicio seguridad en redes
Ejercicio seguridad en redesEjercicio seguridad en redes
Ejercicio seguridad en redes
 
Mantenimiento preventivo y correctivo de software.
Mantenimiento preventivo y correctivo de software.Mantenimiento preventivo y correctivo de software.
Mantenimiento preventivo y correctivo de software.
 
Tarea de infotecnología para el aprendizaje, unidad IV (power point).
Tarea de infotecnología para el aprendizaje, unidad IV (power point).Tarea de infotecnología para el aprendizaje, unidad IV (power point).
Tarea de infotecnología para el aprendizaje, unidad IV (power point).
 
Rmi
RmiRmi
Rmi
 
Comparticion de recursos- Sistemas Distribuidos
Comparticion de recursos- Sistemas Distribuidos Comparticion de recursos- Sistemas Distribuidos
Comparticion de recursos- Sistemas Distribuidos
 
Comandos de Linux
Comandos de Linux Comandos de Linux
Comandos de Linux
 
TeamViewer Vs. AnyDesk
TeamViewer Vs. AnyDeskTeamViewer Vs. AnyDesk
TeamViewer Vs. AnyDesk
 
Diseño de Entradas
Diseño de EntradasDiseño de Entradas
Diseño de Entradas
 
2014-2 Tema 2. Sniffer y Monitores
2014-2 Tema 2. Sniffer y Monitores2014-2 Tema 2. Sniffer y Monitores
2014-2 Tema 2. Sniffer y Monitores
 
Tabla modelo osi
Tabla modelo osiTabla modelo osi
Tabla modelo osi
 
Dns diapositivas
Dns diapositivas Dns diapositivas
Dns diapositivas
 
Proxy presentacion
Proxy presentacionProxy presentacion
Proxy presentacion
 
Que es un presentador grafico
Que es un presentador graficoQue es un presentador grafico
Que es un presentador grafico
 
Seguridad linux 2011
Seguridad linux 2011Seguridad linux 2011
Seguridad linux 2011
 
diapositivas de windows 8
diapositivas de windows 8diapositivas de windows 8
diapositivas de windows 8
 
Introducción a la administración de Redes
Introducción a la administración de RedesIntroducción a la administración de Redes
Introducción a la administración de Redes
 

Destacado

Compresión en SQL Server 2008
Compresión en SQL Server 2008Compresión en SQL Server 2008
Compresión en SQL Server 2008
Enrique Catala Bañuls
 
Query store
Query storeQuery store
Procesamientos Almacenados
Procesamientos AlmacenadosProcesamientos Almacenados
Procesamientos Almacenadoselylupita
 
Transacciones en transact sql
Transacciones en transact sqlTransacciones en transact sql
Transacciones en transact sql
Freddy Poma Inga
 
Creacion De Una Bd en My Sql
Creacion De Una Bd en My SqlCreacion De Una Bd en My Sql
Creacion De Una Bd en My SqlZiscko
 
Procedimientos almacenados..mañana
Procedimientos almacenados..mañanaProcedimientos almacenados..mañana
Procedimientos almacenados..mañanaANilez Solrak
 
TECNOLOGÍAS DE LA INFORMACIÓN
TECNOLOGÍAS DE LA INFORMACIÓN  TECNOLOGÍAS DE LA INFORMACIÓN
TECNOLOGÍAS DE LA INFORMACIÓN
Lizeth Bernabe
 
Categorias de Procedimientos Almacenados
Categorias de Procedimientos AlmacenadosCategorias de Procedimientos Almacenados
Categorias de Procedimientos Almacenados
Carlos Pereda Miñano
 
1. realizacion de tareas administrativas
1.  realizacion de tareas administrativas1.  realizacion de tareas administrativas
1. realizacion de tareas administrativasNestor Lopez
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenados
iluijo
 
Procedimientos almacenados en MySQL
Procedimientos almacenados en MySQLProcedimientos almacenados en MySQL
Procedimientos almacenados en MySQL
Miguel Angel Rivera Robledo
 
Ejemplo LOGIN conectado a una base de datos
Ejemplo LOGIN conectado a una base de datosEjemplo LOGIN conectado a una base de datos
Ejemplo LOGIN conectado a una base de datos
Vane Borjas
 
Mejores prácticas desarrollo de base de datos
Mejores prácticas desarrollo de base de datos Mejores prácticas desarrollo de base de datos
Mejores prácticas desarrollo de base de datos
Eduardo Castro
 
Ejercicios De Sql (actualizado)
Ejercicios De Sql (actualizado)Ejercicios De Sql (actualizado)
Ejercicios De Sql (actualizado)capver digital
 
Ejercicios resueltos de sql
Ejercicios resueltos de sqlEjercicios resueltos de sql
Ejercicios resueltos de sql
Julian Benavidez
 
Administración y programación en sql server
Administración y programación en sql serverAdministración y programación en sql server
Administración y programación en sql server
Isabel_Samir
 

Destacado (18)

Compresión en SQL Server 2008
Compresión en SQL Server 2008Compresión en SQL Server 2008
Compresión en SQL Server 2008
 
Query store
Query storeQuery store
Query store
 
Procesamientos Almacenados
Procesamientos AlmacenadosProcesamientos Almacenados
Procesamientos Almacenados
 
Transacciones en transact sql
Transacciones en transact sqlTransacciones en transact sql
Transacciones en transact sql
 
Creacion De Una Bd en My Sql
Creacion De Una Bd en My SqlCreacion De Una Bd en My Sql
Creacion De Una Bd en My Sql
 
Procedimientos almacenados..mañana
Procedimientos almacenados..mañanaProcedimientos almacenados..mañana
Procedimientos almacenados..mañana
 
TECNOLOGÍAS DE LA INFORMACIÓN
TECNOLOGÍAS DE LA INFORMACIÓN  TECNOLOGÍAS DE LA INFORMACIÓN
TECNOLOGÍAS DE LA INFORMACIÓN
 
Categorias de Procedimientos Almacenados
Categorias de Procedimientos AlmacenadosCategorias de Procedimientos Almacenados
Categorias de Procedimientos Almacenados
 
1. realizacion de tareas administrativas
1.  realizacion de tareas administrativas1.  realizacion de tareas administrativas
1. realizacion de tareas administrativas
 
1. realizacion de tareas administrativas
1.  realizacion de tareas administrativas1.  realizacion de tareas administrativas
1. realizacion de tareas administrativas
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenados
 
Procedimientos almacenados en MySQL
Procedimientos almacenados en MySQLProcedimientos almacenados en MySQL
Procedimientos almacenados en MySQL
 
Sql procedimientos-almacenados
Sql procedimientos-almacenadosSql procedimientos-almacenados
Sql procedimientos-almacenados
 
Ejemplo LOGIN conectado a una base de datos
Ejemplo LOGIN conectado a una base de datosEjemplo LOGIN conectado a una base de datos
Ejemplo LOGIN conectado a una base de datos
 
Mejores prácticas desarrollo de base de datos
Mejores prácticas desarrollo de base de datos Mejores prácticas desarrollo de base de datos
Mejores prácticas desarrollo de base de datos
 
Ejercicios De Sql (actualizado)
Ejercicios De Sql (actualizado)Ejercicios De Sql (actualizado)
Ejercicios De Sql (actualizado)
 
Ejercicios resueltos de sql
Ejercicios resueltos de sqlEjercicios resueltos de sql
Ejercicios resueltos de sql
 
Administración y programación en sql server
Administración y programación en sql serverAdministración y programación en sql server
Administración y programación en sql server
 

Similar a Método SQL para comprimir archivos de carga de datos

Bases distribuidas en mysql
Bases distribuidas en mysqlBases distribuidas en mysql
Bases distribuidas en mysqlGiovanni Peruch
 
Manual de administración BD
Manual de administración BDManual de administración BD
Manual de administración BD
Anderson Rubio
 
Grupo1 trabajo colaborativo2
Grupo1 trabajo colaborativo2Grupo1 trabajo colaborativo2
Grupo1 trabajo colaborativo2
tv cable
 
Modificacion de registros de windows
Modificacion de registros de windows Modificacion de registros de windows
Modificacion de registros de windows
Marp Aerov
 
Práctica 7
Práctica 7Práctica 7
Práctica 7
Caleb Betancourt
 
Respaldo y recuperacion
Respaldo y recuperacionRespaldo y recuperacion
Respaldo y recuperacion
Adrian Miranda
 
Saturacion base de datos - Ejemplos Parte 1
Saturacion base de datos  - Ejemplos Parte 1Saturacion base de datos  - Ejemplos Parte 1
Saturacion base de datos - Ejemplos Parte 1
GrupoTresPacEspe
 
P2C1 - Configuración del Entorno
P2C1 - Configuración del EntornoP2C1 - Configuración del Entorno
P2C1 - Configuración del Entorno
Aurelio Martín Obando Távara
 
Manual instalacion sql_server
Manual instalacion sql_serverManual instalacion sql_server
Manual instalacion sql_server
Jhon_Marjorie
 
cuadro_comparativo_SGBD_top_10.docx (1).docx
cuadro_comparativo_SGBD_top_10.docx (1).docxcuadro_comparativo_SGBD_top_10.docx (1).docx
cuadro_comparativo_SGBD_top_10.docx (1).docx
Igor Rodriguez
 
Guía de instalación de sql server 2008 r2 paso a paso
Guía de instalación de sql server 2008 r2 paso a pasoGuía de instalación de sql server 2008 r2 paso a paso
Guía de instalación de sql server 2008 r2 paso a paso
Kira_Bravo
 
Guia basica de MySQL parte 1
Guia basica de MySQL parte 1Guia basica de MySQL parte 1
Guia basica de MySQL parte 1
vinceq
 
INSTALACION DE SQL SERVER 2012.pdf
INSTALACION DE SQL SERVER 2012.pdfINSTALACION DE SQL SERVER 2012.pdf
INSTALACION DE SQL SERVER 2012.pdf
OsoGG
 
mysql y visual c++.pdf
mysql y visual c++.pdfmysql y visual c++.pdf
mysql y visual c++.pdf
Diego Mendezmar
 
Practica de active directory completa
Practica de active directory completaPractica de active directory completa
Practica de active directory completaJesus Carmona
 
Grupo1
Grupo1Grupo1
Grupo1
johy_cabrera
 

Similar a Método SQL para comprimir archivos de carga de datos (20)

Bases distribuidas en mysql
Bases distribuidas en mysqlBases distribuidas en mysql
Bases distribuidas en mysql
 
Manual de administración BD
Manual de administración BDManual de administración BD
Manual de administración BD
 
Grupo1 trabajo colaborativo2
Grupo1 trabajo colaborativo2Grupo1 trabajo colaborativo2
Grupo1 trabajo colaborativo2
 
Db2 10 afinamiento
Db2 10   afinamientoDb2 10   afinamiento
Db2 10 afinamiento
 
Modificacion de registros de windows
Modificacion de registros de windows Modificacion de registros de windows
Modificacion de registros de windows
 
Práctica 7
Práctica 7Práctica 7
Práctica 7
 
Respaldo y recuperacion
Respaldo y recuperacionRespaldo y recuperacion
Respaldo y recuperacion
 
Saturacion base de datos - Ejemplos Parte 1
Saturacion base de datos  - Ejemplos Parte 1Saturacion base de datos  - Ejemplos Parte 1
Saturacion base de datos - Ejemplos Parte 1
 
P2C1 - Configuración del Entorno
P2C1 - Configuración del EntornoP2C1 - Configuración del Entorno
P2C1 - Configuración del Entorno
 
Manual instalacion sql_server
Manual instalacion sql_serverManual instalacion sql_server
Manual instalacion sql_server
 
cuadro_comparativo_SGBD_top_10.docx (1).docx
cuadro_comparativo_SGBD_top_10.docx (1).docxcuadro_comparativo_SGBD_top_10.docx (1).docx
cuadro_comparativo_SGBD_top_10.docx (1).docx
 
Guía de instalación de sql server 2008 r2 paso a paso
Guía de instalación de sql server 2008 r2 paso a pasoGuía de instalación de sql server 2008 r2 paso a paso
Guía de instalación de sql server 2008 r2 paso a paso
 
Instalación
InstalaciónInstalación
Instalación
 
Guia basica de MySQL parte 1
Guia basica de MySQL parte 1Guia basica de MySQL parte 1
Guia basica de MySQL parte 1
 
INSTALACION DE SQL SERVER 2012.pdf
INSTALACION DE SQL SERVER 2012.pdfINSTALACION DE SQL SERVER 2012.pdf
INSTALACION DE SQL SERVER 2012.pdf
 
Copia de-mandante
Copia de-mandanteCopia de-mandante
Copia de-mandante
 
Manual de instalacion
Manual de instalacionManual de instalacion
Manual de instalacion
 
mysql y visual c++.pdf
mysql y visual c++.pdfmysql y visual c++.pdf
mysql y visual c++.pdf
 
Practica de active directory completa
Practica de active directory completaPractica de active directory completa
Practica de active directory completa
 
Grupo1
Grupo1Grupo1
Grupo1
 

Más de Sebastian Rodriguez Robotham

Desafíos No Tecnológicos para implementar Big Data
Desafíos No Tecnológicos para implementar Big DataDesafíos No Tecnológicos para implementar Big Data
Desafíos No Tecnológicos para implementar Big Data
Sebastian Rodriguez Robotham
 
La colaboración y cooperación como estrategias en la educación superior
La colaboración y cooperación como estrategias en la educación superiorLa colaboración y cooperación como estrategias en la educación superior
La colaboración y cooperación como estrategias en la educación superior
Sebastian Rodriguez Robotham
 
Evolucion y desafios del sistema de aseguramiento de la calidad en la educaci...
Evolucion y desafios del sistema de aseguramiento de la calidad en la educaci...Evolucion y desafios del sistema de aseguramiento de la calidad en la educaci...
Evolucion y desafios del sistema de aseguramiento de la calidad en la educaci...
Sebastian Rodriguez Robotham
 
POC SQL 2014
POC SQL 2014POC SQL 2014
Diseño eficiente de un cubo para resolver problemas en las áreas de negocio
Diseño eficiente de un cubo para resolver problemas en las áreas de negocioDiseño eficiente de un cubo para resolver problemas en las áreas de negocio
Diseño eficiente de un cubo para resolver problemas en las áreas de negocio
Sebastian Rodriguez Robotham
 
Método SQL para Calcular el valor máximo de un conjunto de columnas de una Tabla
Método SQL para Calcular el valor máximo de un conjunto de columnas de una TablaMétodo SQL para Calcular el valor máximo de un conjunto de columnas de una Tabla
Método SQL para Calcular el valor máximo de un conjunto de columnas de una Tabla
Sebastian Rodriguez Robotham
 
Estrategia para la Implementación y Administración Inteligente de DataWarehouse
Estrategia para la Implementación y Administración Inteligente de DataWarehouseEstrategia para la Implementación y Administración Inteligente de DataWarehouse
Estrategia para la Implementación y Administración Inteligente de DataWarehouse
Sebastian Rodriguez Robotham
 
Introducción a DataWarehouse e Inteligencia de Negocios
Introducción a DataWarehouse e Inteligencia de NegociosIntroducción a DataWarehouse e Inteligencia de Negocios
Introducción a DataWarehouse e Inteligencia de Negocios
Sebastian Rodriguez Robotham
 

Más de Sebastian Rodriguez Robotham (8)

Desafíos No Tecnológicos para implementar Big Data
Desafíos No Tecnológicos para implementar Big DataDesafíos No Tecnológicos para implementar Big Data
Desafíos No Tecnológicos para implementar Big Data
 
La colaboración y cooperación como estrategias en la educación superior
La colaboración y cooperación como estrategias en la educación superiorLa colaboración y cooperación como estrategias en la educación superior
La colaboración y cooperación como estrategias en la educación superior
 
Evolucion y desafios del sistema de aseguramiento de la calidad en la educaci...
Evolucion y desafios del sistema de aseguramiento de la calidad en la educaci...Evolucion y desafios del sistema de aseguramiento de la calidad en la educaci...
Evolucion y desafios del sistema de aseguramiento de la calidad en la educaci...
 
POC SQL 2014
POC SQL 2014POC SQL 2014
POC SQL 2014
 
Diseño eficiente de un cubo para resolver problemas en las áreas de negocio
Diseño eficiente de un cubo para resolver problemas en las áreas de negocioDiseño eficiente de un cubo para resolver problemas en las áreas de negocio
Diseño eficiente de un cubo para resolver problemas en las áreas de negocio
 
Método SQL para Calcular el valor máximo de un conjunto de columnas de una Tabla
Método SQL para Calcular el valor máximo de un conjunto de columnas de una TablaMétodo SQL para Calcular el valor máximo de un conjunto de columnas de una Tabla
Método SQL para Calcular el valor máximo de un conjunto de columnas de una Tabla
 
Estrategia para la Implementación y Administración Inteligente de DataWarehouse
Estrategia para la Implementación y Administración Inteligente de DataWarehouseEstrategia para la Implementación y Administración Inteligente de DataWarehouse
Estrategia para la Implementación y Administración Inteligente de DataWarehouse
 
Introducción a DataWarehouse e Inteligencia de Negocios
Introducción a DataWarehouse e Inteligencia de NegociosIntroducción a DataWarehouse e Inteligencia de Negocios
Introducción a DataWarehouse e Inteligencia de Negocios
 

Último

actividad 2 tecnologia (3).pdf junto con mis compañeros
actividad 2 tecnologia (3).pdf junto con mis compañerosactividad 2 tecnologia (3).pdf junto con mis compañeros
actividad 2 tecnologia (3).pdf junto con mis compañeros
aljitagallego
 
Trabajo tecnología sobre Conceptos Básicos De Programación
Trabajo tecnología sobre Conceptos Básicos De ProgramaciónTrabajo tecnología sobre Conceptos Básicos De Programación
Trabajo tecnología sobre Conceptos Básicos De Programación
SofiaCollazos
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
JulyMuoz18
 
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
marianabz2403
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
cofferub
 
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
espinozaernesto427
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
Emilio Casbas
 
TAREA #6 - RECURSOS INCLUSIVOS POR ANGGIE ARRIAGA
TAREA #6 - RECURSOS INCLUSIVOS POR ANGGIE ARRIAGATAREA #6 - RECURSOS INCLUSIVOS POR ANGGIE ARRIAGA
TAREA #6 - RECURSOS INCLUSIVOS POR ANGGIE ARRIAGA
arriagaanggie50
 
Conceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdfConceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdf
ValeriaAyala48
 
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdfEstructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
IsabellaRubio6
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
cristianrb0324
 
trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
zoecaicedosalazar
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
vazquezgarciajesusma
 
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVATECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
LilibethEstupian
 
Ventajas y desventajas de la desinfección con cloro
Ventajas y desventajas de la desinfección con cloroVentajas y desventajas de la desinfección con cloro
Ventajas y desventajas de la desinfección con cloro
durangense277
 
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
AlejandraCasallas7
 
Desarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdfDesarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdf
samuelvideos
 
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
CesarPazosQuispe
 
absorcion de gases y practicas de laboratorios
absorcion de gases y practicas de laboratoriosabsorcion de gases y practicas de laboratorios
absorcion de gases y practicas de laboratorios
JuanAlvarez413513
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
Fernando Villares
 

Último (20)

actividad 2 tecnologia (3).pdf junto con mis compañeros
actividad 2 tecnologia (3).pdf junto con mis compañerosactividad 2 tecnologia (3).pdf junto con mis compañeros
actividad 2 tecnologia (3).pdf junto con mis compañeros
 
Trabajo tecnología sobre Conceptos Básicos De Programación
Trabajo tecnología sobre Conceptos Básicos De ProgramaciónTrabajo tecnología sobre Conceptos Básicos De Programación
Trabajo tecnología sobre Conceptos Básicos De Programación
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
 
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
 
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
 
TAREA #6 - RECURSOS INCLUSIVOS POR ANGGIE ARRIAGA
TAREA #6 - RECURSOS INCLUSIVOS POR ANGGIE ARRIAGATAREA #6 - RECURSOS INCLUSIVOS POR ANGGIE ARRIAGA
TAREA #6 - RECURSOS INCLUSIVOS POR ANGGIE ARRIAGA
 
Conceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdfConceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdf
 
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdfEstructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
 
trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVATECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
 
Ventajas y desventajas de la desinfección con cloro
Ventajas y desventajas de la desinfección con cloroVentajas y desventajas de la desinfección con cloro
Ventajas y desventajas de la desinfección con cloro
 
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
 
Desarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdfDesarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdf
 
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
 
absorcion de gases y practicas de laboratorios
absorcion de gases y practicas de laboratoriosabsorcion de gases y practicas de laboratorios
absorcion de gases y practicas de laboratorios
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
 

Método SQL para comprimir archivos de carga de datos

  • 1. Método SQL para Comprimir Archivos de Carga de Datos. Utilización de T-SQL para mejorar la administración de ficheros utilizados para cargar información. Fecha: Agosto del 2013. Versión: 1.0 Autor: Sebastián Rodríguez Robotham e-mail: srodriguez@easybi.cl
  • 2. Método SQL para Comprimir Archivos de Carga de Datos Sebastián Rodríguez Robotham. www.EasyBI.cl 2 | P a g e Introducción. En ambientes de DataWarehouse, debemos interactuar con una gran cantidad de ficheros en forma periódica, estos ficheros son descargados desde diversas fuentes para luego cargarlos a nuestro ambiente de base de datos SQL Server. Sin embargo, muchas veces estos ficheros quedan alojados eternamente en las rutas de carga y no son administrados en forma eficiente, consumiendo grandes cantidades de espacio en nuestros discos duros. El objetivo de este documento es entregar una forma simple y eficiente de mejorar la administración de estos ficheros a través compresión de archivos en formato RAR, todo esto ejecutado directamente con procedimientos almacenados de SQL Server, sin intervención de herramientas adicionales, dado que en muchas empresas no existen recursos para adquirir herramientas especializadas en este tipo de tareas, o simplemente no queremos incluir otros utilitarios que hagan más complicado nuestro entorno analítico. En el anexo 1 está la información de configuración requerida en SQL Server y Windows para implementar correctamente esta solución. Problema. Supongamos que tenemos un sistema de DataWarehouse implementado bajo la plataforma SQL Server versión 2008R2 o superior. Este sistema descarga información diaria desde un origen de datos FTP que pesa aproximadamente 2GB por día (llamaremos a este archivo VentasYYYYMMDD.TXT, donde YYYY es el año, MM es el mes y DD es el día), y luego lo aloja en nuestro servidor de base de datos para realizar una carga de tipo Bulk. Una buena práctica es almacenar los archivos de origen, dado que si por algún motivo necesitamos reprocesar nuestro ambiente de DW deberemos realizar nuevamente la carga de datos desde estos ficheros. Por tanto si requerimos almacenar al menos un año de información histórica de archivos diarios, hará que necesitemos solo para este proceso, un disco de al menos 730GB, lo que claramente es ineficiente. Solución. La solucionar óptima para este requerimiento es comprimir los archivos históricos y administrarlos en un ambiente distinto, pudiendo ser desde unidades de discos independientes en el mismo servidor, o mejor aún en servidores distintos, para ello necesitamos, de alguna forma, tomar los ficheros desde el servidor de base de datos, comprimirlos en la nueva unidad y eliminar los archivos sin comprimir. Como estrategia para facilitar la administración de estos ficheros, generaremos archivos comprimidos en forma mensual, ya que de esa forma no tendremos tantos ficheros independientes.
  • 3. Método SQL para Comprimir Archivos de Carga de Datos Sebastián Rodríguez Robotham. www.EasyBI.cl 3 | P a g e Para llevar a cabo esto utilizando solamente T-SQL, deberemos crear el siguiente procedimiento almacenado que realiza esta tarea en forma muy sencilla: Figura 1. Código del Procedimiento Almacenado PA_Control_GeneraArchivoZip Lo que realiza este procedimiento es generar un script de ejecución de una simple sentencia RAR, indicando la ruta y nombre de los archivos a comprimir, la ruta y nombre del archivo destino y parámetros opcionales, como por ejemplo eliminar o no los archivos origen, e incluir o no el path completo de los ficheros. Finalmente, a través del comando XP_CmdShell ejecutamos dicho script, esto es similar a ejecutar cualquier comando vía CMD de Windows. Invocación del Procedimiento Almacenado. La invocación básica se realizaría de la siguiente forma: Figura 2. Ejecución del Procedimiento Almacenado PA_Control_GeneraArchivoZip Una observación importante a tener en cuenta es que el segundo parámetro, cuando el nombre del archivo a comprimir tiene espacios, hay que incluir las comillas dobles (“), de lo contrario el comando RAR pensará que son parámetros y no lo reconocerá, por tanto no realizará la compresión del archivo.
  • 4. Método SQL para Comprimir Archivos de Carga de Datos Sebastián Rodríguez Robotham. www.EasyBI.cl 4 | P a g e Ejemplo de Implementación. Siguiendo el escenario planteado inicialmente, implementaremos la rutina para comprimir diariamente los ficheros que han sido procesados, la siguiente imagen muestra un directorio con los archivos históricos a comprimir: Figura 3. Listado de Ficheros a Comprimir La carpeta “Demo” contiene los ficheros descargados desde una fuente FTP y procesados en el DataWarehouse, y la carpeta “DemoComprime” contendrá los ficheros comprimidos. Para realizar la compresión, deberemos ejecutar el siguiente script, que recibe como parámetro la fecha del proceso diario. Figura 4. Script para Automatizar Proceso de Compresión de Ficheros.
  • 5. Método SQL para Comprimir Archivos de Carga de Datos Sebastián Rodríguez Robotham. www.EasyBI.cl 5 | P a g e Una vez ejecutado el script, revisamos que en el directorio “DemoComprime” existe un nuevo archivo con los ficheros diarios, como lo muestra la siguiente figura: Figura 5. Listado de Ficheros comprimidos por el Script Al ejecutarlo por segunda vez con parámetro “2012-01-15”, comprimirá los ficheros de enero, dejando solamente los ficheros de marzo disponibles, tal como lo muestra la figura siguiente: Figura 6. Listado de Ficheros sin Comprimir
  • 6. Método SQL para Comprimir Archivos de Carga de Datos Sebastián Rodríguez Robotham. www.EasyBI.cl 6 | P a g e Finalmente, podemos mejorar el script inicial, creando un procedimiento almacenado que reciba como parámetro una fecha, e incluir este nuevo procedimiento en SQL Agent para que la tarea quede 100% automatizada, la siguiente figura muestra el código SQL final. Figura 7. Procedimiento Almacenado para la Automatización de Compresión de Archivos. Conclusiones Finales Este método permite automatizar en forma fácil y eficiente la administración de ficheros que son utilizados por SQL para cargar información. Como principales ventajas frente a otras alternativas, podemos destacar: a. Lo simple de implementar para personas que tienen conocimientos medios de T-SQL. b. No requiere intervención de utilitarios adicionales, solamente WinRAR c. No requiere ningún tipo de inversión adicional en términos monetarios (frente a otras soluciones comerciales) d. 100% adaptable: podemos agregar complejidad y lógicas de negocios a este código en forma bastante sencilla, frente a otras herramientas cerradas que no permiten modificaciones de los parámetros preestablecidos.
  • 7. Método SQL para Comprimir Archivos de Carga de Datos Sebastián Rodríguez Robotham. www.EasyBI.cl 7 | P a g e Anexo 1. Requisitos para la implementación de la solución. A continuación se presentan los pasos a seguir para asegurar la correcta implementación de esta solución. Habilitar RAR en Windows Para utilizar esta solución no basta con instalar el componente WinRAR en el computador o servidor, hay que habilitar la ruta para que pueda ser accedida desde la consola, cuando no está hecho esto, aparecerá el siguiente mensaje al intentar ejecutarlo: Figura 8. Pantalla CMD con error de Rar no encontrado. Pasos a seguir para incluir la ruta en el Path de Windows (versión 7) a. Clic en menú inicio, luego clic derecho sobre “Equipo”, seleccionar menú “Propiedades” Figura 9. Pantallas Windows para Configurar path, paso a
  • 8. Método SQL para Comprimir Archivos de Carga de Datos Sebastián Rodríguez Robotham. www.EasyBI.cl 8 | P a g e b. Una vez en la pantalla, dar clic en “configuración avanzada del Sistema”, aparecerá las propiedades del sistema, dar clic en “Variables de Entorno” Figura 10. Pantallas Windows para Configurar path, paso b c. Buscar en “variables del sistema” la variable “Path”, y dar clic en “Editar”. Figura 11. Pantallas Windows para Configurar path, paso c
  • 9. Método SQL para Comprimir Archivos de Carga de Datos Sebastián Rodríguez Robotham. www.EasyBI.cl 9 | P a g e d. En el campo “Valor de la variable”, agregar al final la ruta encontrada para los archivos de la aplicación RAR, como aparecen en la siguiente figura Figura 12. Pantallas Windows para Configurar path, paso d e. Dar clic en aceptar y cerrar todas las ventanas Para que SQL Server pueda aceptar los cambios en la variable Path, se deben reiniciar los servicios de SQL Server o reiniciar el servidor. Habilitar comando XP_CmdShell en SQL Server Por default la opción de XP_CmdShell viene deshabilitada en SQL Server, por tanto hay que habilitarla manualmente, para ello seguir los siguientes pasos: a. En Management Studio, clic derecho sobre el servidor de base de datos, seleccionar la opción “Facets” Figura 13. Pantallas SQL Server para Configurar XP_CmdShell, paso a
  • 10. Método SQL para Comprimir Archivos de Carga de Datos Sebastián Rodríguez Robotham. www.EasyBI.cl 10 | P a g e b. Dentro del área de “Facets”, seleccionar “Surface Area Configuration”, como muestra la siguiente figura. Figura 14. Pantallas SQL Server para Configurar XP_CmdShell, paso b c. Una vez desplegada la lista de opciones en “Surface Area Configuration”, ubicar al final de la grilla la opción “XPCmdShellEnabled”, y setear en “True” Figura 15. Pantallas SQL Server para Configurar XP_CmdShell, paso c Finalmente, dar “OK” a todas las ventanas.
  • 11. Método SQL para Comprimir Archivos de Carga de Datos Sebastián Rodríguez Robotham. www.EasyBI.cl 11 | P a g e Anexo 2. Código SQL PA_Control_GeneraArchivoZIP ALTER PROCEDURE PA_Control_GeneraArchivoZip @DirectorioOrigen varchar(150) ,@ArchivosOrigen varchar(150) ,@DirectorioDestino varchar(150) ,@NombreComprimido varchar(150) ,@Password varchar(150) ,@IncluyePath int ,@EliminaArchivosOrigen int WITH ENCRYPTION AS --Variable DECLARE @Script varchar(8000) = '' --Sintaxis para correr RAR SET @Script = 'rar a -y' + case when @IncluyePath = 0 then ' -ep ' else ' -ep2 ' end + case when @EliminaArchivosOrigen = 1 then ' -df ' else ' ' end + case when len(@Password) >= 1 then ' -p' + @Password + ' ' else ' ' end + '' + @DirectorioDestino + '' + @NombreComprimido + ' ' + @DirectorioOrigen + '' + @ArchivosOrigen --Ejecución de RAR EXEC XP_CmdShell @Script , NO_OUTPUT Anexo 3. Código SQL PA_ComprimeFicheroVentas CREATE PROCEDURE PA_ComprimeFicherosVenta @Periodo_Id DATE WITH ENCRYPTION AS --Periodo indica la fecha del día que se procesa --Podría ser GetDate(), pero se deja paramétrico para convertir a SP --DECLARE @Periodo_Id DATE = '2012-01-15' --Se obtiene mes y año en formato texto, --el mes debes ser de dos dígitos, ejemplo "02" para febrero DECLARE @Mes VARCHAR(2) = RIGHT('0' + CONVERT(VARCHAR,Month(@Periodo_Id)),2) ,@Ano VARCHAR(4) = CONVERT(VARCHAR,Year(@Periodo_Id)) --Asigna los nombres de los archivos a comprimir y nombre del archivo destino DECLARE @ArchivosOrigen VARCHAR(100) = 'Ventas' + @Ano + @Mes + '*.*' ,@RarDestino VARCHAR(100) = 'VentasRAR' + @Ano + @Mes --Ejecuta el procedimiento almacenado que comprime EXEC PA_Control_GeneraArchivoZip 'D:DEMO' -- @DirectorioOrigen ,@ArchivosOrigen -- @ArchivosOrigen ,'D:DEMOCOMPRIME' -- @DirectorioDestino ,@RarDestino -- @NombreComprimido ,'' -- @Password ,0 -- @IncluyePath ,1 -- @EliminaArchivosOrigen