Cosas para tomar en cuenta cuando usamos archivos CSV para exportar/importar datos

huge-csv-file-meme

En casi todo proyecto de migración de datos o integración de sistemas llega un momento en el que los datos deben ser convertidos de su formato nativo a formatos especiales transitorios. Eso es especialmente cierto cuando la integración o migración de datos es entre sistemas de software de distintas compañías o entre sistemas que tienen distinto propósito.

Los formatos transitorios más utilizados suelen ser bastantes legibles para seres humanos, por ejemplo el formato CSV (“Character Separated Values” o “Comma Separated Values”):

first_name,last_name,email
Ana,Pérez,aperez@example.com

 

La primera fila contiene los nombres de las columnas o campos de información y las siguientes filas contienen los récords. En el formato CSV el nombre de las columnas no es requisito siempre y cuando el software que recibirá los datos sepa el orden en el que están los campos. Nosotros preferimos incluirlos siempre que sea posible porque sirven como documentación.

En el ejemplo anterior cada campo está separado por una coma “,”, pero el separador ( “delimiter” en inglés) puede ser cualquier símbolo. Por ejemplo, uno que usamos mucho es la línea vertical “|” (“pipe” en inglés):

first_name|last_name|email
Ana|Pérez|aperez@example.com

 

Lo que nos gusta del símbolo “|” como separador es que es raro que se utilice para otra cosa. La coma es un símbolo común y puede aparecer en cualquier parte del texto inesperadamente, por ejemplo en direcciones postales:

first_name,last_name,email,address
Ana,Pérez,aperez@example.com, PO Box 3333 Cayey, PR 00736

 

Note que la dirección tiene una coma después de Cayey seguido de PR y el “zip code”. Eso es una entrada común para direcciones postales, pero como incluye una coma al importar los datos a otros sistema así es como los interpretará:

first_name: Ana
last_name: Pérez
email: aperez@example.com
address: PO Box 333 Cayey
???????: PR 00736

 

El texto “PR 00736″ se interpreta como un campo sin nombre y provocará un error.

Para evitar esta situación preferimos usar “|” como delimitador. Los datos se verían así:

first_name|last_name|email|address
Ana|Pérez|aperez@example.com|PO Box 3333 Cayey, PR 00736

 

Como el separador ya no es la coma sino “|”, los datos se interpretarán así:

first_name: Ana
last_name: Pérez
email: aperez@example.com
address: PO Box 333 Cayey, PR 00736

 

Por supuesto esto presume que el sistema hacia donde se migrarán los datos sabe que el delimitador es el símbolo “|” y que puede procesarlo así.

Si estuviésemos obligados a utilizar la coma como separador la otra alternativa sería exportar todos los campos entre comillas dobles:

“first_name”,”last_name”,”email”,”address”
“Ana”,”Pérez”,”aperez@example.com”, “PO Box 3333 Cayey, PR 00736″

 

En el argot de los archivos CSV la doble comilla se conoce como un “text qualifier”. Si el sistema que recibirá los datos sabe cómo interpretar las comillas, entonces no habrá confusión y los datos se importarán correctamente. Sorpresivamente, el muy utilizado y bien ponderado Excel a veces no importa correctamente datos en este formato, aunque los puede exportar así.

Si aún así los datos no son aceptados por el otro sistema, entonces nos quedan dos opciones:

  1. Remover todas las comas que no sean separadores.
  2. Reemplazar todas las comas que no sean separadores por otro símbolo.

Esto implica añadir una etapa de preparación de datos después de exportar los datos de un sistema y antes de importarlos al otro.

Aparte del símbolo “|” estos son otros separadores que hemos tenido que utilizar en lugar de la coma: “;”, “~” y “*”.

Esos símbolos no tienen nada de especial excepto que no confligían con los caracteres utilizados en los datos del proyecto. Tenga presente que un separador de campos no tiene que ser un solo símbolo, podemos usar más de uno, por ejemplo “*|”:

first_name*|last_name*|email*|address
Ana*|Pérez*|aperez@example.com*|PO Box 3333 Cayey, PR 00736

 

Lo importante es que el sistema que recibirá los datos sepa cómo leerlos.

Una nota sobre importar archivos CSV a Excel: Si el archivo tiene más de 1,048,576 filas o 16,384 columnas Excel no lo importará completo. Unos de nuestros clientes tenía 3 años de datos de un viejo sistema que no podían trabajar en Excel porque el archivo contenía sobre 5 millones de filas. El acondicionamiento de los datos tuvo que hacerse con otras herramientas y varios “scripts”. Los datos finalmente se pudieron migrar a un nuevo sistema desarrollado por nosotros en donde actualmente trabajan con mayor facilidad.

Para preguntas sobre este tema o si tiene un proyecto en el cuál podemos ayudarle, puede contactarnos de varias formas..

Suscríbase a nuestro boletín para recibir recomendaciones sobre cómo distintas tecnologías le ayudarán a liberar tiempo, reducir costos y eliminar estrés en su empresa. Las suscripción es gratis y puede removerse usted mismo del programa cuando quiera: Reciba por email "Tecnología para mi negocio con Nuvelbits".