[LUG.ro] sql importar csv

Sebastian Dominguez sebaminguez en gmail.com
Vie Mar 6 16:23:47 ART 2009


Sebastian Dominguez escribió:
> Juan Pablo Villalba-A favor del Open Source escribió:
>> hola
>>        Les comento que me estoy iniciando en el mundo PHP+MYSQL y 
>> necesito
>> automatizar una tarea en el servidor.lo que necesito puntualmente es lo
>> siguiente: que cada 6 hs se importe un archivo *.csv a una base de 
>> datos en
>> mysql.estuve googleando y buscando info, sobre si existe en el 
>> lenguaje sql
>> algo que importe archivos y no encontre nada...la automatizacion deberia
>> hacerla con crontab? Gracias
>>   
> Vi que te pasaron un script en ruby. Tambien veo que hablas de PHP+SQL.
>
> Porque no intentas mas o menos lo mismo con PHP.
> Un  for que recorra linea a linea el archivo (fgets)
> |<?php
> $gestor = @fopen("/tmp/archivo_entrada.txt", "r");
> if ($gestor) {
>    while (!feof($gestor)) {
>        $bufer = fgets($gestor, 4096);
>        echo $bufer;
>    }
>    fclose ($gestor);
> }
> ?> |
>
> con explode separas los campos por el ; y le das el INSERT en la DB. 
> (en lugar de hacer el echo $bufer
>
> Recomiendo que no utilices file() o similares que cargan todo el 
> archivo en un arreglo porque esto significa cargar el archivo en 
> memoria y, sobre todo en tu caso, podes encontrarte con archivos tan 
> grande que no te alcance la memoria para manejarlos.
>
>
> Si necesitas mas ayuda avisá.
Obvio tambien lo tenes que meter en el crontab. Pero ya tenes php 
instalado y manejas mas el lenguaje (supongo). Podes ejecutar el script 
ejecutandolo directamente o utilizando wget para "visitar" una página
* */6 * * * root /usr/bin/wget -O - -q http://sitio.com/script.php; echo 
"$(date) Importacion a la DB ejecutado" >> /var/log/syslog
>
> -- 
> Seba Dominguez


Más información sobre la lista de distribución Lugro