El transferir información de un archivo .csv a otro formato es una tarea muy común para los que viven en el mundo Teqi. Ya sea el leer el archivo y desplegar la información en una página web o escribir directamente a una base de datos, el poder hacerlo de una manera fácil y eficiente es muy valioso y ahorra mucho tiempo.

Siguiendo con nuestra serie exploratoria del lenguaje Groovy, aquí te mostramos un ejemplo que te permite leer un archivo texto (.csv) con información y genera un archivo nuevo con comandos SQL que insertan la información a una base datos.

Para empezar, nuestro archivo fuente contiene el nombre y el correo de algunos usuarios. Como este archivo es generado por un sistema el cual no puede excluir a aquellos records que no contienen email, el formato incluye renglones con datos no relevantes a nuestro problema. A nosotros solo nos interesa el extraer el nombre, el apellido y el correo electrónico si existe.

El formato del archivo puede ser de la siguiente manera:

nombre apellido, correo <- información delimitada con una coma
, correo <- correo sin nombre, no valido
nombre apellido, ,correo <- correo en tercera columna

Groovy: Archivo Fuente EjemploGroovy: Archivo Fuente Ejemplo

Necesitamos de generar un programa que lea a través del archivo, separe la información dependiendo su columna (delimitada con una coma) y verifique que la información leída contiene un email. Una vez verificada, tiene que crear un archivo con comandos SQL el cual podamos leer con nuestra base de datos favorita. Para cuestiones de este ejemplo, imaginémonos que tenemos una tabla con las siguientes columnas: primernombre, apellido, email.

El archivo fuente se llama datos.csv y el que generaremos se llama nuevosDatos.sql. El programa Groovy que realiza la tarea es el siguiente:

Groovy: Programa EjemploGroovy: Programa Ejemplo

Y nos da como resultado:

Groovy: Archivo Generado con Comandos SQLGroovy: Archivo Generado con Comandos SQL

Y eso es todo, el archivo es generado fácilmente. Cabe notar que simplemente indicamos que archivo es el fuente:

def archivoLeido = new File("c:\\datos.csv")

Y por cada línea, extraemos la información deseada:


archivoLeido.splitEachLine(",") { tokens ->
def nombre = tokens[0]
def email = tokens[1]
def email2 = tokens[2]

Después de verificar si la información es correcta, escribimos el archivo con los comandos SQL:


//Escribir archivo con comandos SQL
File archivo = new File("c:\\nuevosDatos.sql")
sqlComandos.each{
archivo.append("${it}\n")
}

¡Y eso es todo! Con tan solos algunos pasos y unos comandos funcionales de Groovy, podemos leer un archivo csv y crear los comandos SQL que se pueden usar para insertar datos en una base de datos.