有一个MySQL表,即服务器上的用户。它有28行和100万条记录(也可能增加)。我想从这个表中获取所有行,对它们执行一些操作,然后将它们添加到MongoDB中。我知道,通过简单的“从用户中选择*”操作来检索这些记录需要花费大量的时间。我一直在用Java,JDBC来做这件事。所以,我从我的研究中得到的选择是:
选项1.进行批处理:我的计划是从表中获取行总数,即。从用户中选择count(*)。然后,将获取大小设置为1000 (setFetchSize(1000))。在那之后我被困住了。我不知道我能不能写这样的东西:
Connection conn = DriverManager.getConnection(connectionUrl, userName,passWord);
Statement stmt =conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY,java.sql.ResultSet.CONCUR_READ_ONLY);
String query="select * from users";
ResultSet resultSet=stmt.executeQuery(query); 选项2.执行分页:我的想法是设置一个限制,它将告诉抓取的起始索引和抓取的偏移量。可能是,将偏移量设置为1000并对索引进行迭代。
我读了一篇建议的文章链接,但没有发现在使用限制来处理这个问题时有任何循环漏洞。
任何人如果有足够的耐心阅读这篇长篇文章,请分享你对我的思考过程的宝贵意见,如果有什么不对或遗漏的地方,请纠正我。
发布于 2014-09-19 04:20:39
根据我所做的研究,回答我自己的问题:
https://stackoverflow.com/questions/25790613
复制相似问题