Creating a report generator within a mysql database to be read on rails.

Hello,

My issue is that I am creating a database in MySQL and needing to
export the information in automatically generated reports (.csv), into
a web application written in Rails.

Does anyone have any advice or tutorial links as to how I may do this?
Or whether Rails or MySQL have a preferably freeware application that
could make it much easier?

Thanks

jraglin wrote:

Hello,

My issue is that I am creating a database in MySQL and needing to
export the information in automatically generated reports (.csv), into
a web application written in Rails.

Well, you can generate the CSV files with MySQL's export feature and
read them with FasterCSV. But that seems silly: it would be better to
have the Rails app connect to the DB directly and get the data it needs.

Does anyone have any advice or tutorial links as to how I may do this?
Or whether Rails or MySQL have a preferably freeware application that
could make it much easier?

Thanks

Best,

Hi,

I don't know if i got you right, but it seems that you are trying to
import your mysql data into csv report?
Well, the easiest way to do this is using the fastercsv gem.

1. Install gem : sudo gem install fastercsv
2. Add on top of your controller : require 'fastercsv'
2. Create your action and view in your controller :

#The action

def import_csv
  result = YourModel.find(:all, :conditions => "your_condition")
  @outfile = "your_csv_report_name_" + Time.now.strftime("%m-%d-%Y") +
".csv"

  csv_data = FasterCSV.generate do |csv|
    #field names
    csv << ["Field_name_1"]
    csv << ["Field_name_2"]

    #Data
    result.each do |table|
      csv << [ table.field1 table.field2]
    end

    #Write data in csv format
    send_data csv_data,
    :type => 'text/csv; charset=iso-8859-1; header=present',
    :disposition => "attachment; filename=#{@outfile}"
  end
  redirect_to :action => "your_action"
end

#The view import_csv.html.erb
<% form_tag :action => "import_csv" do %>
  <%= submit_tag 'Print' %>
<% end %>

Hope this helps!

Regards,