rescue true

10 mayo, 2010

Exportar SQL a CSV desde Rails

Filed under: Ruby on Rails,Tips&Tricks — xurdekio @ 7:47 am
Tags: , , , ,

En muchas ocasiones nos encontramos con la problemática de tener que exportar muchos datos rapidamente de la base de datos SQL a un fichero CSV.

La forma mas cómoda es delegar el trabajo a la base de datos, que para eso ya lo tiene implementado. Por ejemplo vamos a exportar el archivo de libros de una biblioteca a un CSV desde nuestra aplicación rails.
En el modelo:

CSV_PATH = "#{RAILS_ROOT}/private/arhivo_biblioteca.csv"
def self.all_to_csv(path=CSV_PATH,separator=',',delimitator='"')
  #Esta es la consulta sql
  query = "SELECT l.id, l.autor, l.titulo, l.descripcion,  l.tema, l.editorial, l.paginas, l.localizacion, l.isbn  FROM `libros` l INTO OUTFILE '#{path}' FIELDS TERMINATED BY '#{separator}' ENCLOSED BY '#{delimitator}' LINES TERMINATED BY '\\n'" 
  ActiveRecord::Base.connection.execute(query) #Ejecutamos la consultar
  path #devolvemos la ruta del path 
end

Como podeis ver el método recibe 3 argumentos, que tienen valores por defecto:

      El path donde dejar el fichero
      El separador de los campos
      Y por último el delimitador

Si queremos usarlo desde el controlador nos valdrá algo como

  def exportar
    path = Libro.all_to_csv
    send_file(path)
  end

Ahora toca experimentar… podeis pasarle más parametros, como unas conditions para no sacar todos los libros, el orden, etc…

Dejar un comentario »

Aún no hay comentarios.

RSS feed for comments on this post. TrackBack URI

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Crea un blog o un sitio web gratuitos con WordPress.com.

A %d blogueros les gusta esto: