按列搜索结果集

时间:2012-12-28 09:32:26

标签: java mysql resultset

我遇到有关大型数据库的Resultset的问题。 (MySQLDB,Java 1.7)

任务是将一列的所有条目转换为另一个数据库。 (例如,将每个数字除以3并将其写入另一个数据库)

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

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

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

所以这是我的主要问题:

  1. 有办法吗?
  2. 我应该为每个列创建一个查询并解析它们(一次一个数组但是70个查询)或
  3. 我应该只获取整个ResultSet并逐行解析它,将它们写入70个数组吗?
  4. 提前问候和感谢!

2 个答案:

答案 0 :(得分:2)

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

这意味着你不能在一次查询/迭代中完成任务,然后一次性编写整个批次,而且你没有逐行工作的低效率。

我的另一个评论可能是这是不成熟的优化。您是否尝试加载整个数据集,并查看需要多少内存。如果它的大小为10或甚至100的meg,我希望JVM能够轻松处理它。

我假设你的转型需要用Java完成。如果你可以在SQL中完成它,那么完全在数据库中完成它可能会更有效率。

答案 1 :(得分:0)

为什么不用mysql做。

使用此查询:

create table <table_name> as select <column_name_on_which_you_want_transformation>/3 from <table name>;