将数据从 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的主要内容,如果未能解决你的问题,请参考以下文章

如何从Oracle 迁移到 Mongo DB

数据库从 PostgreSQL 迁移到 Oracle

Django:将项目从 sqlite 迁移到 PostgreSQL 的最佳实践是啥

从 MySQL 迁移到 PostgreSQL [关闭]

只需五步!将数据仓库从 Redshift 迁移到阿里云 AnalyticDB for PostgreSQL

从 mysql 迁移到 postgresql 时,Laravel 雄辩的 ORM 不起作用