轨道5.1
我有一个使用PostgreSQL作为数据库的RAILS应用程序。我想从RAILS透视图导出/转储RAILS数据库数据。所以我独立于数据库。然后,我想使用这个导出/转储文件将数据加载/导入/播种回数据库。
我试过以下的gem:
*seed_dump
它可以工作,但是它不能处理HABTM模型关系。
*yaml_db,可以工作,但yaml格式不是rails db:seed所能理解的格式
轨道5.1
我有一个使用PostgreSQL作为数据库的RAILS应用程序。我想从RAILS透视图导出/转储RAILS数据库数据。所以我独立于数据库。然后,我想使用这个导出/转储文件将数据加载/导入/播种回数据库。
我试过以下的gem:
*seed_dump
它可以工作,但是它不能处理HABTM模型关系。
*yaml_db,可以工作,但yaml格式不是rails db:seed所能理解的格式
2条答案
按热度按时间8cdiaqws1#
下面是一个导出到JSON的实际示例。我使用rake任务来做这类事情。在这个例子中,我转储了一个users表。
然后导入
有时候,作为导入过程的一部分,我会想要一个干净的表来导入,在这种情况下,我会开始taske:
这不是处理超大型表的最佳方式,这些表的行数超过50,000行,并且/或者包含大量文本字段。在这种情况下,数据库本机转储/导入工具会更合适。
为了完整起见,这里有一个HABTM示例。仍然有一个链接表,但它没有模型,所以唯一的方法是使用原始SQL。让我们假设我们的用户有许多角色,反之亦然(用户M:M角色),例如:
必然会有一个名为
users_roles
的连接表,它有两个列,user_id
和role_id
。参见HABTM上的Rails指南要导出,我们必须直接执行SQL:
并执行SQL导入
See this answer for more on inserting with raw SQL
pkmbmrz72#
我同意人们说使用内置的数据库工具来做这件事。或者找出是否有一种方法可以告诉数据库导出到CSV,然后以这种方式导入。
我的意思是,在2017年,你的Rails应用程序不应该只输出HTML,还应该输出JSON。也许你想写一个SPA类型的应用程序在未来,或移动的应用程序。确保除了HTML版本之外还有对象的Javascript表示是一个好主意。
因此,如果您的应用中有/项目,请编写一个脚本,请求
/projects
作为JSON。将每个对象保存为它自己的文件,然后在远程系统中将所有内容都发送回。如果有任何东西不在JSON表示中(即您没有列出项目上的所有用户),请确保也访问这些端点,并将所有内容保存到单独的JSON文件中。
然后编写一个播放器脚本,将所有这些文件发布到目标服务。
这是一种方法。还有一种方法是在ActiveRecord中完全用Ruby编写它--这可能是某种用户数据导出功能,所以这也可能是一种很棒的方法,但在我看来,“我们能为此构建一个Javascript前端或移动的应用程序吗?通常是在问路之前,“用户能否把自己的数据拿出来”;)