从一个数据库中获取数据并将其保存在另一个数据库中

时间:2013-05-02 05:09:51

标签: ruby-on-rails database json ruby-on-rails-3

我有一个现在使用SQLite的应用程序。现在我将它改为PostgreSQL。表结构已更改。但是我想将前一个数据库中的数据导入到新数据库中。

如何获取数据并将其保存在新表中?

我尝试了一些事情,比如从url获取json并将数据保存在表中但是我在解析json字符串时遇到了问题。所以我对如何继续感到困惑。

2 个答案:

答案 0 :(得分:0)

您可以使用模型中的方法将数据从sqlite导出到sql文件中。 这样,您可以更改表列名称,因为表结构已更改。

app/models/user.rb中的sql_export方法:

class User < ActiveRecord::Base
  def self.sql_export
    filecontent = ""
    User.all.each do |user|
      filecontent << "INSERT INTO users (email, password) VALUES ('#{user.email}','#{user.password}');"
    end
    File.open("tmp/export.sql", "w+") do |f|
     f.write(filecontent)
    end
end

启动rails控制台并运行该方法(确保您在连接到sqlite数据库的环境中运行):

$> rails c
$ irb> User.sql_export

它基本上读取数据库中的所有数据并生成插入语句并写入tmp/export.sql文件。

然后将sql文件导入到postgresql

psql databasename < tmp/export

答案 1 :(得分:0)

我现在找到了一种解析json数据的方法,如下所示

url = "http://samplesite/export_data.json"
        resp = Net::HTTP.get_response(URI.parse(url))
        data = resp.body
        post_data = JSON.parse(data)
        post_data.each do |value|
           u = Model.new
           u.field = value['name']
           u.save
        end

这可用于从表中获取数据,并可相应地保存到另一个表中。