SlideShare una empresa de Scribd logo
1 de 11
Descargar para leer sin conexión
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

Sistemas Operativos Mecanismos y Politicas
Sistemas Operativos Mecanismos y PoliticasSistemas Operativos Mecanismos y Politicas
Sistemas Operativos Mecanismos y PoliticasJuan Novelo
 
Bases de Datos para Dispositivos Móviles - Unidad II: Arquitectura de Base de...
Bases de Datos para Dispositivos Móviles - Unidad II: Arquitectura de Base de...Bases de Datos para Dispositivos Móviles - Unidad II: Arquitectura de Base de...
Bases de Datos para Dispositivos Móviles - Unidad II: Arquitectura de Base de...José Antonio Sandoval Acosta
 
Diagramas de interaccion
Diagramas de interaccionDiagramas de interaccion
Diagramas de interacciongmjuan
 
Intranet, Extranet e Internet
Intranet, Extranet e InternetIntranet, Extranet e Internet
Intranet, Extranet e Internetyinacano
 
Representacion de la información en las computadoras
Representacion de la información en las computadorasRepresentacion de la información en las computadoras
Representacion de la información en las computadoraspanama
 
Archivos secuenciales
Archivos secuencialesArchivos secuenciales
Archivos secuencialessekt07
 
Diagramas De Casos De Uso
Diagramas De Casos De UsoDiagramas De Casos De Uso
Diagramas De Casos De Usonahun1385
 
27778471 programacion-logica
27778471 programacion-logica27778471 programacion-logica
27778471 programacion-logicamaxsp5566
 
Android estructura del Sistema Operativo
Android estructura del Sistema OperativoAndroid estructura del Sistema Operativo
Android estructura del Sistema OperativoJesus Jimenez
 
Administracion de una red de area local
Administracion de una red de area localAdministracion de una red de area local
Administracion de una red de area localliindalizaamaa
 
Cartilla de helisa
Cartilla de helisaCartilla de helisa
Cartilla de helisaoskr12381
 
BD. control de concurrencia
BD. control de concurrenciaBD. control de concurrencia
BD. control de concurrencialiras loca
 

La actualidad más candente (20)

Poo en java herencia
Poo en java   herenciaPoo en java   herencia
Poo en java herencia
 
Sistemas Operativos Mecanismos y Politicas
Sistemas Operativos Mecanismos y PoliticasSistemas Operativos Mecanismos y Politicas
Sistemas Operativos Mecanismos y Politicas
 
Bases de Datos para Dispositivos Móviles - Unidad II: Arquitectura de Base de...
Bases de Datos para Dispositivos Móviles - Unidad II: Arquitectura de Base de...Bases de Datos para Dispositivos Móviles - Unidad II: Arquitectura de Base de...
Bases de Datos para Dispositivos Móviles - Unidad II: Arquitectura de Base de...
 
Diagramas de interaccion
Diagramas de interaccionDiagramas de interaccion
Diagramas de interaccion
 
Reglas de Codd
Reglas de CoddReglas de Codd
Reglas de Codd
 
Cuadro comparativo sgbd
Cuadro comparativo sgbdCuadro comparativo sgbd
Cuadro comparativo sgbd
 
Intranet, Extranet e Internet
Intranet, Extranet e InternetIntranet, Extranet e Internet
Intranet, Extranet e Internet
 
Representacion de la información en las computadoras
Representacion de la información en las computadorasRepresentacion de la información en las computadoras
Representacion de la información en las computadoras
 
Archivos secuenciales
Archivos secuencialesArchivos secuenciales
Archivos secuenciales
 
Diagrama causal - Delincuencia juvenil en el Callo
Diagrama causal - Delincuencia juvenil en el CalloDiagrama causal - Delincuencia juvenil en el Callo
Diagrama causal - Delincuencia juvenil en el Callo
 
Diagramas De Casos De Uso
Diagramas De Casos De UsoDiagramas De Casos De Uso
Diagramas De Casos De Uso
 
Manual de usuario
Manual de usuarioManual de usuario
Manual de usuario
 
27778471 programacion-logica
27778471 programacion-logica27778471 programacion-logica
27778471 programacion-logica
 
Exposición Diagrama de Clases
Exposición Diagrama de ClasesExposición Diagrama de Clases
Exposición Diagrama de Clases
 
Paradigmas de programación
Paradigmas de programaciónParadigmas de programación
Paradigmas de programación
 
Android estructura del Sistema Operativo
Android estructura del Sistema OperativoAndroid estructura del Sistema Operativo
Android estructura del Sistema Operativo
 
Administracion de una red de area local
Administracion de una red de area localAdministracion de una red de area local
Administracion de una red de area local
 
Cartilla de helisa
Cartilla de helisaCartilla de helisa
Cartilla de helisa
 
Fundamentos de las bases de datos
Fundamentos de las bases de datosFundamentos de las bases de datos
Fundamentos de las bases de datos
 
BD. control de concurrencia
BD. control de concurrenciaBD. control de concurrencia
BD. control de concurrencia
 

Destacado

Procesamientos Almacenados
Procesamientos AlmacenadosProcesamientos Almacenados
Procesamientos Almacenadoselylupita
 
Transacciones en transact sql
Transacciones en transact sqlTransacciones en transact sql
Transacciones en transact sqlFreddy 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 AlmacenadosCarlos 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 Almacenadosiluijo
 
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 datosVane 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 sqlJulian 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 serverIsabel_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 BDAnderson Rubio
 
Grupo1 trabajo colaborativo2
Grupo1 trabajo colaborativo2Grupo1 trabajo colaborativo2
Grupo1 trabajo colaborativo2tv cable
 
Modificacion de registros de windows
Modificacion de registros de windows Modificacion de registros de windows
Modificacion de registros de windows Marp Aerov
 
Respaldo y recuperacion
Respaldo y recuperacionRespaldo y recuperacion
Respaldo y recuperacionAdrian 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 1GrupoTresPacEspe
 
Manual instalacion sql_server
Manual instalacion sql_serverManual instalacion sql_server
Manual instalacion sql_serverJhon_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).docxIgor 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 pasoKira_Bravo
 
Guia basica de MySQL parte 1
Guia basica de MySQL parte 1Guia basica de MySQL parte 1
Guia basica de MySQL parte 1vinceq
 
INSTALACION DE SQL SERVER 2012.pdf
INSTALACION DE SQL SERVER 2012.pdfINSTALACION DE SQL SERVER 2012.pdf
INSTALACION DE SQL SERVER 2012.pdfOsoGG
 
Practica de active directory completa
Practica de active directory completaPractica de active directory completa
Practica de active directory completaJesus Carmona
 

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 DataSebastian 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 superiorSebastian 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
 
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 negocioSebastian 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 TablaSebastian 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 DataWarehouseSebastian 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 NegociosSebastian 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

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...JaquelineJuarez15
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofJuancarlosHuertasNio1
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 

Último (20)

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sof
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 

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