我正在尝试将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
答案 0 :(得分:3)
最好将MySQL表转储为JSON,然后使用mongoimport
导入该JSON;这比通过MongoMapper一行一行地快得多,它会彻底绕过你的问题作为一个愉快的副作用。
有一个gem可以帮助你将MySQL数据库转储到名为mysql2xxxx的JSON:
我没有使用它,但作者似乎在SO上闲逛,所以如果有必要你应该能够得到它的帮助。或者,编写一个快速的一次性脚本将数据转储到JSON。
获得JSON后,可以使用mongoimport
导入它,然后继续讨论更多有趣的问题。
此外,mongoimport
了解CSV,mysqldump
可以直接写入CSV:
mysqldump
命令还可以生成CSV,其他分隔文本或XML格式的输出。
因此,完全跳过MongoMapper和逐行复制以进行数据传输。将您的数据转储为CSV或JSON,然后一次导入所有数据。