[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