[LUG.ro] sql importar csv
Fernando Scandolo (D`arcy)
darcy en darcy.com.ar
Vie Mar 6 14:15:18 ART 2009
2009/3/6 Ezequiel Pochiero <epochiero en gmail.com>
> 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
>
> Hola Juan, fijate este link[0], no lo lei a fondo pero al parecer es lo
> que necesitas. Lo que deberías hacer es tener el script en SQL en un
> archivo, por ejemplo, importar.sql, y en crontab una linea de la forma
> mysql < importar.sql.
>
> Saludos.
>
> [0]http://www.modwest.com/help/kb6-253.html
> _______________________________________________
> Lugro mailing list
> Lugro en lugro.org.ar
> http://www.lugro.org.ar/mailman/listinfo/lugro
>
Podrias meter un script como este en el crontab:
======================================================
#! /usr/bin/ruby
require 'csv'
require 'mysql'
csv_filename = 'test.csv'
mysql_server = 'localhost'
mysql_user = 'usuario'
mysql_password = 'password'
mysql_dbname = 'base'
db = Mysql.real_connect(mysql_server, mysql_user, mysql_password,
mysql_dbname)
CSV::Reader.parse(File.open(csv_filename, 'r')) do |row|
campo1 = db.escape_string row[0]
campo2 = db.escape_string row[1]
campo3 = db.escape_string row[2]
dbh.query("INSERT INTO tabla (campo1, campo2, campo3) VALUES
(${campo1},${campo2},${campo3})")
end
db.close
======================================================
Para eso necesitas ruby y libmysql-ruby
Más información sobre la lista de distribución Lugro