java - 将数据从 MySql 转储到 MongoDB

标签 java mysql mongodb

有一张表event_logs表,里面大概有1600万条记录。数据库是MySQL。数据库存储在谷歌云中。

我的任务是将这些数据转储到 MongoDB 中。在转储数据之前,我需要将每一行转换为 JSON 文档。

表架构问题

1.表中没有auto_increment_id,也没有主键

尝试过以下方式

1.在 Java 中使用 JDBC 驱动程序在 ResultSet 中流式传输结果,但问题是前 300k 个结果花费的时间较少,之后从数据库服务器获取结果需要很长时间,为什么??

2.将查询拆分为多个查询并使用限制(如限制 1000000,100000),但问题是如果行号从 1000000 这样的大数字开始,则需要很长时间才能获得结果。看起来 MySql 仍在从头开始,即使我将行号设置为 1000000 并将结果抛出到这个数字。

请提出从 MySql 复制到 MongoDB 的有效方法的解决方案

最佳答案

首先您可以尝试以这种方式设置 ResultSet 获取大小:

...
Statement statement = connection.createStatement();
statement.setFetchSize(2000); // perhaps more...
ResultSet resultSet = statement.executeQuery("YOUR QUERY");
...

或者您可以只导出您的 MYSQL 数据 (CSV/XML),然后使用此 import-export-tool 导入它们 之后可以通过解析 CSV 文件将每一行转换为 JSON 文档

您也可以尝试使用此参数创建语句:

Statement stmt = con.createStatement(
               ResultSet.TYPE_SCROLL_INSENSITIVE, 
               ResultSet.CONCUR_READ_ONLY);

关于java - 将数据从 MySql 转储到 MongoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24652243/

相关文章:

java - 蒙戈错误: Spring Boot throws E11000 duplicate key error

mongodb - 使用 golang 从已经运行的集群的主实例重播另一个 mongodb 实例中的 oplog

mongodb - 如何在 Mongo 聚合中合并文档中的数组字段

java - 如何在运行测试方法时让 Intellij 显示日志

java - Vaadin + Tomcat webapp 可以用来连续运行一个线程吗?

php - 将表单值插入 Wordpress 数据库表 :php

mysql - Django 在运行时修改 DATABASE_HOST

java - Spring Mongo的查找操作在windows server 2008机器上卡住

java - 将数学字符串转换为 int

php - 更新查询的问题