【问题标题】:Fetching data from one db and saving it in another in rails从一个数据库中获取数据并将其保存在另一个数据库中
【发布时间】:2013-05-02 05:09:51
【问题描述】:

我现在有一个使用 SQLite 的应用程序。现在我将其更改为 PostgreSQL。表结构发生了变化。但我想将前一个数据库中的数据导入到新数据库中。

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

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

【问题讨论】:

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


    【解决方案1】:

    您可以使用模型中的方法将数据从 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
    

    【讨论】:

      【解决方案2】:

      我现在已经找到了一种解析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
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-15
        • 1970-01-01
        相关资源
        最近更新 更多