将数据从 PostgreSQL 迁移到 MongoDB
Posted
技术标签:
【中文标题】将数据从 PostgreSQL 迁移到 MongoDB【英文标题】:Migrate data from PostgreSQL to MongoDB 【发布时间】:2017-06-19 06:36:43 【问题描述】:我必须将 500 万条记录从 PostgreSQL
迁移到 MongoDb
。
我尝试使用 mongify
进行相同的操作,但由于它在 ruby
上运行,而且我对 ruby 完全不熟悉,我无法解决它带来的错误。
所以,我尝试自己在node.js
中编写代码,首先将PostgreSQL data
转换为JSON
,然后将该JSON 插入mongoDb
。
但是,这失败了,因为它占用了大量 RAM,并且不能迁移超过 13000 条记录。
然后我想在Java
中编写代码,因为它有垃圾收集器。它在 RAM 利用率方面工作正常,但速度非常慢(大约 10000 条记录/小时)。按照这个速度,我需要几天的时间来迁移我的数据。
那么,有没有更高效、更快捷的方法呢? python程序会比Java程序快吗?或者有没有其他现成的工具可以做同样的事情?
我的系统配置是: 操作系统 - Windows 7(64 位), 内存 - 4GB, i3处理器
【问题讨论】:
你在使用bulkInsert吗?thejavageek.com/2015/07/08/mongodb-bulk-insert @RahulKumar 不,我正在从 Postgresql 中获取行并一一插入到 Mongodb 中。因为 RAM 不支持将所有 500 万条记录一起转换为 JSON。所以,我在做 db.collection.insert(jsondata) 所以你一次从postgresql中获取所有500万行,然后一一进入mongodb?在任何情况下,您都可以寻找批处理。 您可以从 pg 读取记录,假设每个 200 条(取决于记录的大小)。转换这些,做 bulkInsert 。然后同时对多个线程执行此操作? 我认为您可以通过在 postgresql 中使用 skip 和 limit 创建一批 1000 条记录并处理这 1000 条,然后在这 1000 条上使用 bulkinsert 并循环执行此批处理,直到所有记录都完成。大部分时间都用于连接到 postgresql 和 mongodb。 java天生就更快。 【参考方案1】:看来我迟到了。不过,总有一天,这可能会派上用场!!!!
以下基于 python 的迁移框架应该会派上用场。
https://github.com/datawrangl3r/pg2mongo
根据您的表现,每个 JSON 对象的迁移都是动态的,在您使用上述框架时应该不会出现任何内存锁定问题。
希望对你有帮助!!
【讨论】:
以上是关于将数据从 PostgreSQL 迁移到 MongoDB的主要内容,如果未能解决你的问题,请参考以下文章
Django:将项目从 sqlite 迁移到 PostgreSQL 的最佳实践是啥