从MySQL到Mongodb数据导出:如何保存创建日期?

时间:2011-10-15 19:43:26

标签: mysql ruby-on-rails mongodb

我正在尝试将MySQL表数据导出到MongoDB,在Rails中创建一组“Create”语句。

我的问题是:在我的原始表中,我有“created_at”和“updated_at”字段,即使我将数据导出到新的MongoDB文档,我仍希望保留原始值。但是在Mongo中创建一个新行后,即使我告诉它设置“created_at”= [我的原始日期],Mongo也会将它设置为当前的日期时间。

我该如何避免这种情况?这是我的MongoMapper模型:

class MongoFeedEvent
   include MongoMapper::Document

   key :event_type, String
   key :type_id, Integer
   key :data, String
   timestamps!

end

1 个答案:

答案 0 :(得分:3)

最好将MySQL表转储为JSON,然后使用mongoimport导入该JSON;这比通过MongoMapper一行一行地快得多,它会彻底绕过你的问题作为一个愉快的副作用。

有一个gem可以帮助你将MySQL数据库转储到名为mysql2xxxx的JSON:

  

How to export a MySQL database to JSON?

我没有使用它,但作者似乎在SO上闲逛,所以如果有必要你应该能够得到它的帮助。或者,编写一个快速的一次性脚本将数据转储到JSON。

获得JSON后,可以使用mongoimport导入它,然后继续讨论更多有趣的问题。

此外,mongoimport了解CSV,mysqldump可以直接写入CSV:

  

mysqldump命令还可以生成CSV,其他分隔文本或XML格式的输出。

因此,完全跳过MongoMapper和逐行复制以进行数据传输。将您的数据转储为CSV或JSON,然后一次导入所有数据。