java - 按列搜索结果集

标签 java mysql resultset

我对大型数据库的结果集有疑问。 (MySQLDB,Java 1.7)

任务是将一列的所有条目转换到另一个数据库中。 (例如,将每个数字除以三并将它们写入另一个数据库)

由于数据库包含大约 70 列和几百万行,我的第一个方法是获取 SELECT * 并按列解析结果集。

不幸的是,我发现无法以这种方式解析它,因为指定的方式打算逐行遍历它(while(rs.next()) {} 等)。

我不喜欢这种方式,因为它会创建 70 个大数组,我每次只创建一个数组以减少内存使用。

这是我的主要问题:

  1. 有办法吗?
  2. 我应该为每一列创建一个查询并解析它们(一次一个数组,但 70 个查询)还是
  3. 我应该获取整个 ResultSet 并逐行解析它,将它们写入 70 个数组吗?

提前致以问候和感谢!

最佳答案

为什么不只是 page your queries ?一次取出“n”行,执行转换,然后将它们写入新数据库。

这意味着您不必在一次查询/迭代中提取所有内容,然后一次性写入所有内容,并且不会出现逐行工作的低效率情况。

我的其他评论是这也许是不成熟的优化。您是否尝试过加载整个数据集,并查看它会占用多少内存。如果它的数量级是 10 甚至 100 兆,我希望 JVM 能够轻松处理。

我假设您的转换需要在 Java 中完成。如果您可以在 SQL 中完成此操作,那么完全在数据库中完成此操作可能会更加高效。

关于java - 按列搜索结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14067378/

相关文章:

java - java playframework 的 Yaml fixtures 不能按预期工作

mysql - 如何检查MySQL中某个字段的最后修改时间

java - 如何从实体管理器获取 ResultSetMetaData?

mysql - 帮助使用 SQL 查询查找预订系统的下一个可用日期

mysql - 在 MySQL 中选择列为 0 的时间段之间的时间戳值

如果没有结果,MySQL 查询将返回编号 'zero'

java - 如何更新JTable中的数据? (有代码)

java - 无法找出家庭作业初学者程序员的错误

java - 我可以为 OpenGL 中的静态对象推送一次矩阵吗?

java - 具有不同返回类型的 setter/getter 是否符合 setter/getter 的条件?