lunes, 3 de junio de 2013

How to... Como cargar ficheros de texto grandes en PostgreSQL

Esta semana nos hemos tropezado con un problema de rendimiento de base de datos. Hemos intentado introducir en PostgreSQL un fichero con 6.500.000 de filas leyendo el contenido de cada una de las filas y realizando a continuación un insert para cada una de ellas. El proceso consistía en crear un objeto con la línea leida y mediante Criteria realizar la inserción en la base de datos y tardaba algo así como una semana. Tras buscar con Google y sobre todo en Stackoverflow encontramos que PosgreSQL tiene un comando para realizar estas tareas de forma mucho más efectiva llamado COPY
Para conocer mejor como funciona, pondremos un ejemplo. Supongamos que tenemos en fichero_datos tres columnas separadas por ; que queremos introducir en "tabla" en las columnas value1, value2 y value3. Con el siguiente comando podemos hacer la inserción de forma rápida.
copy tabla (value1,value2,value3) from 'ruta_fichero/fichero_datos.txt' with delimiter ';';
Además se puede hacer también la operación inversa, desde una tabla exportar los valores a un fichero separando cada una de las columnas por un delimitador que especifiquemos.
¿Has tenido algún problema similar?¿Conocías el comando COPY?

No hay comentarios :

Publicar un comentario