【问题标题】:Importing csv into multiple mysql databases from rails app从 Rails 应用程序将 csv 导入多个 mysql 数据库
【发布时间】:2013-11-12 17:57:11
【问题描述】:

我有一个包含 78,000 条记录的 CSV 文件。我正在使用 smarter_csv (https://github.com/tilo/smarter_csv) 来解析 csv 文件。我想从我的 Rails 应用程序将其导入 MySQL 数据库。我有以下两个问题

  1. 从我的 Rails 应用程序快速将如此大的数据集导入 MySQL 的最佳方法是什么?使用 resque 或 sidekiq 创建多个工作人员是个好主意吗?

  2. 我需要将此数据插入到存在于多个数据库中的给定表中。在 Rails 中,我有一个模型只与一个数据库对话。那么如何扩展解决方案以与我的模型中的多个 mysql 数据库通信?

谢谢

【问题讨论】:

    标签: mysql ruby-on-rails-3 csv resque sidekiq


    【解决方案1】:

    一种方法是使用数据库应用程序本身的本地接口进行导入和导出;它将针对特定目的进行优化。

    对于 MySQL,mysqlimport 提供了该接口。请注意,导入也可以作为 SQL 语句完成,并且此可执行文件为底层 SQL 命令提供了一个更健全的接口。

    就实现而言,如果这是一个频繁的导入练习,sidekiq/resque/cron 作业是最好的方法。

    [编辑]

    上面提到的SQL命令是LOAD DATA INFILE,正如另一个答案所指出的那样。

    【讨论】:

      【解决方案2】:

      性能方面最好的方法可能是使用 MYSQL 的 LOAD DATA INFILE 语法并在每个数据库上执行导入命令。这要求数据文件对于每个数据库实例都是本地的。

      正如另一个答案所暗示的那样,mysqlimport 可用于简化导入,因为 LOAD DATA INFILE 语句语法是高度可定制的,并且可以处理多种数据格式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多