有一个表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的有效方法的解决方案
答案 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
的应用程序进行从MySQL
到MongoDB