【问题标题】:Rails: Script to import dataRails:导入数据的脚本
【发布时间】:2009-03-17 14:40:21
【问题描述】:

我有几个脚本可以生成和收集大量数据,我需要这些数据来为我的数据库播种,并在将来向其中添加大量数据。将大量关系数据作为种子数据和在生产期间间歇性导入到 Rails 数据库的最佳方法是什么?

我尚未确定脚本的输出格式,但数据结构很大程度上反映了我的 rails 模型,并包含我希望导入保留的 has_many 关联。

我在 Google 上搜索了一下,看到了 ar-extensions 和 seed_fu 以及使用固定装置的想法。

使用 ar 扩展,所有示例似乎都是简单的 csv 导入(可能来自似乎是其主要用例的表转储),没有提及处理关联或避免重复更新。就我而言,我的脚本中没有 id、外键或连接表,所以这似乎对我不起作用,除非我自己准备好处理这种复杂性。

使用 seed_fu,它看起来可以处理数据创建的关系方面,但仍然需要我指定 id(你怎么知道哪些在生产中可用?)并将代码与数据混合。

Fixtures 也有相同的 id 问题,尽管现在它需要命名对象(我可能最终会使用数字作为名称)而且我不确定如何避免意外重复记录。

或者我最好先将我的数据放入本地 sqlite db,然后使用直接表转储技术?

【问题讨论】:

    标签: ruby-on-rails activerecord


    【解决方案1】:

    我以前用 CSV 文件做过这个。我有一个 cron 作业来收集数据并将其放入可访问的 CSV 文件中。然后我有一个查找 CSV 的 rake 任务(也在 cron 中,但在另一个盒子上),如果有的话,调用模型方法从 CSV 行中创建对象。

    这些模型有一个 csv_create_or_update 方法,该方法采用 CSV 行。这种技术回避了 id 问题,还允许对传入的数据运行(或不运行)验证。

    【讨论】:

      【解决方案2】:

      我最近收到了一个 Rails 应用程序,该应用程序需要一些导入的数据,并且所有这些都在 rake 任务中处理。所有数据都以 csv 格式文件的形式出现,并根据需要按类/模型等进行处理。这对我这个系统的新手来说效果相对较好,因为很容易看到数据的去向和应用方式。当您导入数据时,您可以检查 id 冲突/冲突并相应地处理它们。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-20
        • 2011-02-19
        • 2022-11-09
        • 2021-04-24
        • 2012-11-28
        • 2016-06-23
        相关资源
        最近更新 更多