0

我有使用的应用程序,sqlite db并且该表中有条目。现在我必须更改sqlitepostgres. 而且table design也变了。

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

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

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

4

1 回答 1

1

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

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

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 的方式不依赖于正在使用的数据库。

于 2013-04-25T11:21:30.987 回答