1

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

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

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

谢谢你

4

2 回答 2

1

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

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

于 2013-11-12T09:52:06.217 回答
1

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

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

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

[编辑]

LOAD DATA INFILE正如其他答案指出的那样,上面提到的 SQL 命令是。

于 2013-11-12T09:52:29.900 回答