viernes, 31 de octubre de 2014

Entrada 6

Fecha: 31 de octubre

Acciones realizadas:

--------------------------------------------------------------------------------------------------------------------------

 Los movimientos son una parte esencial de un generador de estados de cuenta, por ende, para poder generar estados de cuenta en una base de datos, se necesita una tabla real con todos los movimientos que realizan los clientes de la base de datos, cada uno en sus propias cuentas. En este caso, los movimientos fueron dados en un archivo de formato .json. Este formato es muy diferente al .xml o .txt, por poner dos ejemplos. Es diferente por la forma en que acomoda los datos, las formas de separarlos y la forma en que se leen también es muy diversa.
 
El archivo .json que contiene los movimientos es el siguiente:



Como se puede observar, el formato de este tipo de archivos es muy peculiar y diferente. Las formas de separar los datos no son con comas o puntos y comas, sino con llaves. Hubo que encontrar la forma de leer el archivo y cargarlo también con el comando "bulk". Esta vez la forma de separar las filas fue con "},{" y las columnas fue con una coma ",".

--------------------------------------------------------------------------------------------------------------------------

Para la lectura y carga del archivo, se creó un procedimiento almacenado llamado "CargarArchivoJson_Movs". Este procedimiento almacenado funciona de la siguiente manera:

1. Se crea una tabla temporal que lee los datos del archivo .json, se colocan en ella misma mediante el comando "bulk insert" usando como separador de de columna una coma(","), y para separador de fila dos llaves y una coma, de esta manera: "}.{". En esta tabla se insertan los datos de la forma: "nombre":"dato".

2. Se crea otra tabla temporal. Se extraen los datos de las parejas "nombre":"dato" de la tabla anterior y se insertan en la nueva tabla temporal, todo esto por medio de las funciones agregadas (van a ser explicadas más adelante) "extraer" y "extraerSinComa".

3. Se crea otra tabla temporal, la cual posee la estructura similar a la tabla real dbo.Movimientos en cuanto a tipos de datos de la columnas, a nombres y número de columnas. La función de esta tabla es sustituir las hileras "null" de los campos, por valores null verdaderos, por medio de otra función agregada llamada "SiEsNull". También, se insertan las fechas de aplicación de los movimientos pendientes.

4. Como parte del bloque transaccional y como paso final, se insertan los valores de la tabla temporal anterior, en la tabla real de movimientos.

El código de este procedimiento es el siguiente:




Funciones agregadas:

1. ExtraerSinComa:


 Es una función agregada que separa una tira o string en partes, usando un separador que puede ser una coma, pueden ser dos puntos, punto y coma, etc. Es usada en el procedimiento para separar datos que están separados por medio del separador ":".

2. Extraer:

Esta función agregada lo que hace es extraer el texto que esté en medio de comillas, de cualquier string o tira. En el procedimiento se usa para eso mismo, para extraer los datos que estén en medio de comillas, debido a la forma "nombre":"dato".

3. SiEsNull
Esta función agregada lo que hace es que cambia los campos que poseen un string o tira que dice "NULL", por un valor null verdadero, reemplazando el simple string "NULL". En el procedimiento se usa para cambiar los strings "NULL" en la segunda tabla temporal, por valores null verdaderos.

--------------------------------------------------------------------------------------------------------------------------

Para poder saber la manera de realizar la lectura y carga de un archivo .json, se tuvo que investigar características de este tipo de archivos y de como se realiza con el comando "bulk insert". Para esta investigación, fueron de mucha utilidad links como:

http://www.forosdelweb.com/f29/rest-service-usando-json-sql-server-1008129/

http://www.weboomania.com/2009/04/10/dynamic-json-parser/

http://www.solvusoft.com/es/file-extensions/file-extension-json/

Con esta investigación, y con la que se había realizado anteriormente acerca de las características de los archivos .json, se pudo lograr la lectura y carga de los movimientos en su tabla real, para después ser usados de la mejor manera a la hora de generar estados de cuenta.

--------------------------------------------------------------------------------------------------------------------------

Horas trabajadas: 2 horas, 30 minutos

Participantes: Jonathan Salazar García
Luis Ricardo Gutiérrez Aguilar

No hay comentarios:

Publicar un comentario