将数据从sqlite导出到rails中的csv文件

时间:2013-04-25 10:47:06

标签: ruby-on-rails ruby-on-rails-3 export-to-csv

我有使用sqlite db的应用,该表中有条目。现在我必须将sqlite更改为postgrestable design也发生了变化。

如果它是相同的表设计,那么我将使用taps或使用yaml-db转储数据,然后将数据推送到postgres,但在我的场景中,表设计也发生了变化但是我想根据新表将数据从sqlite移动到postgres。

所以我想把数据从sqlite导出到csv文件,然后将数据从csv移到postgres。这是我必须做的方式还是有其他方法可以做到这一点?如果是这样,那么我如何export to csvimport to postgres

另一件事是,从sqlite导出数据后,有没有办法通过migration推送数据? 请帮帮我。

1 个答案:

答案 0 :(得分:1)

要以CSV格式导出,只需将控制器操作添加到csv的respond_to,然后在匹配的视图文件夹中创建.csv.erb文件以创建csv。然后可以通过向URL添加.csv来调用它。

所以你的控制器会是这样的:

def index
  @people = Person.all

  respond_to do |format|
    format.html # index.html.erb
    format.json { render json: @people }
    format.csv
  end
end

您查看哪些文件会保存在文件中(类似于/app/views/people/index.csv.erb)包含:

First Name,Last Name
<% @people.each do |p| %>
  <%= raw "\"#{p.first_name}\"" %>,<%= raw "\"#{p.last_name}\"" %>
<% end %>

这样创建CSV不依赖于正在使用的数据库。