我现在有一个使用 SQLite 的应用程序。现在我将其更改为 PostgreSQL。表结构发生了变化。但我想将前一个数据库中的数据导入到新数据库中。
如何获取数据并将其保存在新表中?
我尝试了一些事情,比如从 url 获取 json 并将数据保存在表中,但我在解析 json 字符串时遇到了问题。所以我对如何进行感到困惑。
我现在有一个使用 SQLite 的应用程序。现在我将其更改为 PostgreSQL。表结构发生了变化。但我想将前一个数据库中的数据导入到新数据库中。
如何获取数据并将其保存在新表中?
我尝试了一些事情,比如从 url 获取 json 并将数据保存在表中,但我在解析 json 字符串时遇到了问题。所以我对如何进行感到困惑。
我现在找到了一种解析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
这可用于从表中获取数据,并可以相应地保存到另一个表中。
您可以使用模型中的方法将数据从 sqlite 导出到 sql 文件中。这样,您可以在表结构更改后更改表列名称。
sql_export 方法在app/models/user.rb
:
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