Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 将rails数据库提取到JSON文件_Ruby On Rails_Json_Sqlite_Dump_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 将rails数据库提取到JSON文件

Ruby on rails 将rails数据库提取到JSON文件,ruby-on-rails,json,sqlite,dump,ruby-on-rails-4,Ruby On Rails,Json,Sqlite,Dump,Ruby On Rails 4,如何将rails sqlite3 db中的数据提取到文件中? 我使用的是rails 4 我想提取数据库中的所有数据,以便以后重置数据库或切换到其他类型的数据库时重新加载数据。只需创建数据库的数据库转储文件,并在需要时使用它即可 假设您希望转储数据库以用于db/development.sqlite3, 这直接来自于: 使用“.dump”命令转换数据库的全部内容 转换为单个ASCII文本文件。此文件可以转换回 通过管道将其返回到sqlite3 要创建转储文件,请执行以下操作: echo '.dump

如何将rails sqlite3 db中的数据提取到文件中?

我使用的是rails 4


我想提取数据库中的所有数据,以便以后重置数据库或切换到其他类型的数据库时重新加载数据。

只需创建数据库的数据库转储文件,并在需要时使用它即可

假设您希望转储数据库以用于
db/development.sqlite3
, 这直接来自于:

使用“
.dump
”命令转换数据库的全部内容 转换为单个ASCII文本文件。此文件可以转换回 通过管道将其返回到sqlite3

要创建转储文件,请执行以下操作:

echo '.dump' | sqlite3 db/development.sqlite3 | gzip -c > dev.dump.gz
zcat dev.dump.gz | sqlite3 development.sqlite3
要还原转储文件,请执行以下操作:

echo '.dump' | sqlite3 db/development.sqlite3 | gzip -c > dev.dump.gz
zcat dev.dump.gz | sqlite3 development.sqlite3

我完全同意
.dump
而不是生成json转储。但出于好奇,我编写了一个脚本,将所有模型转换为json

Rails.application.eager_load! # To load all models app/models/**/*.rb

all_records = ActiveRecord::Base.descendants.map &:all

all_records.to_json
但在有很多记录的真实环境中执行可能需要很长时间

另一种方法(我建议在本例中使用)由于Sqlite3只是一个文件,只需将文件
db/development.Sqlite3
复制到
db/development.Sqlite3.backup
。当您想要恢复它时,只需将它复制回cp-f db/development.sqlite3.backup db/development.sqlite3。请记住,
.dump
生成一个包含INSERT和creates语句的ASCII文本文件,您无法在提取它的数据库中恢复它,因为它将尝试复制记录。

使用“yaml_db”gem

转储数据 (数据转储后存储在单独的文件中) 及


为了将数据加载到其他数据库

,我使用用户友好的phpmyadmin导出将所有数据库提取为json。它可以轻松地为您的数据库创建导出json数据。希望这对你有帮助

goto phpmyadmin


导出/键入json

您可以在seeds.rb中简单地编写这一行

File.open("post.json", "w") { |f| f.write Post.all.to_json }
此处的
Post
应替换为您的型号名称。 然后在终端运行:

rake db:seed

你为什么不直接使用数据库转储呢?回答如下:你不是在操作远程机器,对吗
sqlite3
如果您在项目中使用它,它必须作为gem存在于您当前的Rails项目目录中。这比使用javascript或sqlite3命令要好得多。