我想执行某个选择(我在sqldeveloper中测试)将检索非常大量的数据(~350,000行)。最后,我想将这些行写入文件。
我打算编写一个执行它的PERL代码,我想知道是否有办法一次检索一行,将其写入我的输出文件并继续下一行。
也就是说,我希望得到与原始选择相同的结果,但是在较小的块中。
感谢!!!
答案 0 :(得分:2)
如果您认为可以多次支付执行查询的费用,可以使用
SELECT .... FROM ...
WHERE ....
LIMIT 0, 100 // index_from, amount
第一次,下次为索引添加金额
SELECT .... FROM ...
WHERE ....
LIMIT 100, 100
你可以使用LIMIT 0,1
一次获得一条记录,但你有350条记录......这太疯狂了!
答案 1 :(得分:2)
答案 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