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

Posted

技术标签:

【中文标题】从 MySQL 到 Mongo 数据导出:如何保存创建日期?【英文标题】:From MySQL to Mongo data export: how to preserve creation date? 【发布时间】:2011-12-08 11:24:54 【问题描述】:

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

我的问题是:在我的原始表中,我有“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】:

您最好将 MySQL 表转储为 JSON,然后使用 mongoimport 导入该 JSON;这将比通过 MongoMapper 逐行执行要快得多,并且它会完全绕过您的问题,作为一个愉快的副作用。

有一个 gem 可以帮助您将 MySQL 数据库转储为 JSON,称为 mysql2xxxx:

How to export a MySQL database to JSON?

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

获得 JSON 后,您可以使用 mongoimport 将其导入并继续解决更有趣的问题。

另外,mongoimport 理解 CSV,mysqldump 可以直接写 CSV:

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

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

【讨论】:

非常感谢!你的回答拯救了我的一天!

以上是关于从 MySQL 到 Mongo 数据导出:如何保存创建日期?的主要内容,如果未能解决你的问题,请参考以下文章

如何从Oracle 迁移到 Mongo DB

如何确定mongo主从搭建成功

将 mongo 集合导出到 SQL Server 的最佳实践

如何将MYSQL中数据导出到EXCEL表中 python 脚本?

从 mongo 导出然后导入 SQL Server 时出现问题

Mongodb 3.4 + Centos6.5 配置 + mysql.sql转为csv 或 json导入和导出Mongo (64位系统)