SQL - 如何一次选择一行?

时间:2012-04-11 07:45:16

标签: mysql perl select

我想执行某个选择(我在sqldeveloper中测试)将检索非常大量的数据(~350,000行)。最后,我想将这些行写入文件。

我打算编写一个执行它的PERL代码,我想知道是否有办法一次检索一行,将其写入我的输出文件并继续下一行。

也就是说,我希望得到与原始选择相同的结果,但是在较小的块中。

感谢!!!

4 个答案:

答案 0 :(得分:2)

如果您认为可以多次支付执行查询的费用,可以使用

SELECT .... FROM ...
WHERE ....
LIMIT 0, 100 // index_from, amount

第一次,下次为索引添加金额

SELECT .... FROM ...
WHERE ....
LIMIT 100, 100

你可以使用LIMIT 0,1一次获得一条记录,但你有350条记录......这太疯狂了!

答案 1 :(得分:2)

你说:

  

我想知道是否有办法一次检索一行,将其写入我的输出文件并继续下一行。

如果您只是想将数据导出到文件,则应考虑使用SELECT ... INTO OUTFILE

它比运行每个查询运行得快得多。

答案 2 :(得分:2)

你只需要使用

$dbh->{'mysql_use_result'} = 1;

告诉MySQL驱动程序不要将整个结果加载到内存中。

接下来,您只需使用

处理每个结果行
while ( my $ary_ref  = $sth->fetchrow_arrayref ) {

....
}

答案 3 :(得分:0)

创建一个循环

SELECT * FROM my_table LIMIT 0, 1

然后下次用一个

增加你的限制
SELECT * FROM my_table LIMIT 1, 1