将数据从MySql转储到MongoDB

时间:2014-07-09 11:16:08

标签: java mysql mongodb

有一个表event_logs表中有大约1600万个条目。数据库是MySQL。数据库存储在Google Cloud中。

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

表架构问题

1.表中没有auto_increment_id且没有主键

以下列方式尝试

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

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

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

2 个答案:

答案 0 :(得分:0)

首先,您可以尝试以这种方式设置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:

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

答案 1 :(得分:0)

使用Mongify基于Ruby的应用程序进行从MySQLMongoDB

的超级简单转换