loader

Problemas con delimitadores dentro de archivos planos

Cuando se trabaja con información histórica de uno o varios sistemas antiguos, a los cuales llamaré como Legacys, existe una gran posibilidad de que la información almacenada en estos sistemas tenga algún tipo de error.

En ocasiones, el usuario puede guardar información con errores ya sean de formato, caracteres especiales o cualquier valor que el sistema debería validar antes de guardar pero se deja pasar. Por otro lado, puede ocurrir que la información almacenada quiera ser extraída para utilizarla a manera de reportes, pero, al momento de extraerla se puede notar como la existencia de ciertos caracteres dentro de la información provocan errores de lectura, carga y reportería.

Cuando se exporta un rango determinado de columnas de un Legacy para su utilización, puede darse el caso en el que, la cantidad de columnas en el archivo no coincide con el número de elementos en la cabecera del archivo. Por ejemplo:

FechaMontoDescripciónFacturaID
2019/09/23$933.02Venta de insumos4253423531
2019/09/24$375.84Servicio de Cableado2342432
2019/09/26$-583.73Pago de: Agua, Luz, Teléfono3225253
2019/09/28$739.98, Auto consumo2352344

En esta tabla podemos observar como la línea número 3 y 4 presentan el símbolo de coma ( ,) dentro de su información. Si se exportara este archivo por temas de reportería o auditoria a un formato .csv o un .txt se utilizaría un delimitador, esto se conoce como un archivo de texto plano

En el caso en el que el delimitador sea una coma para separar cada campo. El archivo original se leería.

 Fecha , Monto , Descripción, Factura  ,ID
2019/09/23 , $933.02 , Venta de insumos , 425342353 , 1
2019/09/24 , $375.84 , Servicio de Cableado , 234243 , 2
2019/09/26 , $-583.73 , Pago de: Agua, Luz, Teléfono , 322525 , 3
2019/09/28 , $739.98 , , Auto consumo , 235234 , 4

Tomemos principal atención en la siguiente línea de información:
2019/09/26 , $-583.73 , Pago de: Agua, Luz, Teléfono , 322525 , 3

Como podemos observar, La coma se encuentra dentro del campo de descripción, este campo puede ser digitado por un usuario manualmente y la coma está presente para separar elementos. El problema dentro de este escenario se presenta al momento de querer leer esta información.

Los programas que leen y utilizan este tipo de archivos piden definir el delimitador con el cual deben separar esta larga lista de caracteres. Si se configura con coma, se leería de la siguiente manera:

FechaMontoDescripciónFacturaID
2019/09/23$933.02Venta de insumos4253423531
2019/09/24$375.84Servicio de Cableado2342432
2019/09/26$-583.73Pago de: Agua Luz Teléfono 322525 3
2019/09/28$739.98 Auto consumo 235234 4

La coma encontrada dentro de la información se lee como delimitador, ,provocando que la columna descripción se corra hacia la derecha y causando lo que se conoce como una Inconsistencia de columnas esto provoca que los lectores muestren errores o al momento de cargar la información, su integridad se vea afectada.

Para solucionar este tipo de problemas 2 posibles soluciones pueden aplicar. En primera instancia se puede utilizar un delimitador que sea muy poco probable encontrar en la información. Por ejemplo una barra vertical ( | ). La data se leería:

Fecha | Monto | Descripción| Factura  |ID
2019/09/23 | $933.02 | Venta de insumos | 425342353 | 1 
2019/09/24 | $375.84 | Servicio de Cableado | 234243 | 2 
2019/09/26 | $-583.73 | Pago de: Agua, Luz, Teléfono | 322525 | 3 
2019/09/28 | $739.98 | ,Auto consumo | 235234 | 4 

De esta manera evitaríamos la separación dentro de la descripción. La segunda recomendación se basa en encerrar cada columna entre comillas simples (‘ ‘) o comillas dobles.

"Fecha" | "Monto" | "Descripción"| "Factura" |"ID"
"2019/09/23" | "$933.02" | "Venta de insumos" | "425342353" | "1" 
 "2019/09/24" | "$375.84" | "Servicio de Cableado" | "234243" | "2" 
 "2019/09/26" | "$-583.73" | "Pago de: Agua, Luz, Teléfono" | "322525" | "3" 
 "2019/09/28" | "$739.98" | ",Auto consumo" | "235234" | "4" 

De esta manera los delimitadores dentro de las comillas se omiten para guardar consistencia de la información y que pueda ser leída correctamente.

En la última línea:
2019/09/28′ | ‘$739.98’ | ‘,Auto consumo’| ‘235234’ | ‘4’
Notamos que existe una coma dentro de ‘,Auto consumo’. Para estos casos es necesario aplicar un limpieza de información para que estos caracteres que no tienen razón de ser, desaparezcan.

es_ESES
en_USEN es_ESES