我有使用sqlite db
的应用,该表中有条目。现在我必须将sqlite
更改为postgres
。 table design
也发生了变化。
如果它是相同的表设计,那么我将使用taps
或使用yaml-db
转储数据,然后将数据推送到postgres,但在我的场景中,表设计也发生了变化但是我想根据新表将数据从sqlite移动到postgres。
所以我想把数据从sqlite
导出到csv
文件,然后将数据从csv移到postgres。这是我必须做的方式还是有其他方法可以做到这一点?如果是这样,那么我如何export to csv
和import to postgres
?
另一件事是,从sqlite导出数据后,有没有办法通过migration
推送数据?
请帮帮我。
答案 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不依赖于正在使用的数据库。