从 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 数据导出:如何保存创建日期?的主要内容,如果未能解决你的问题,请参考以下文章
将 mongo 集合导出到 SQL Server 的最佳实践
如何将MYSQL中数据导出到EXCEL表中 python 脚本?
从 mongo 导出然后导入 SQL Server 时出现问题
Mongodb 3.4 + Centos6.5 配置 + mysql.sql转为csv 或 json导入和导出Mongo (64位系统)