我想执行某个选择(正如我在 sqldeveloper 中测试的那样)将检索大量数据(约 350,000 行)。最终,我想将这些行写入文件。
我打算编写一个 PERL 代码来完成它,我想知道是否有办法一次检索一行,将其写入我的输出文件并继续下一行。
也就是说,我希望获得与我原来的选择相同的结果,但更小块。
谢谢!!!
如果您认为可以多次执行查询,则可以使用
SELECT .... FROM ...
WHERE ....
LIMIT 0, 100 // index_from, amount
第一次,下次向索引添加数量
SELECT .... FROM ...
WHERE ....
LIMIT 100, 100
您可以LIMIT 0,1
一次获得一条记录,但您有 350k 条记录……这太疯狂了!
你只需要使用
$dbh->{'mysql_use_result'} = 1;
告诉 MySQL 驱动程序不要将整个结果加载到内存中。
接下来,您只需处理每个结果行
while ( my $ary_ref = $sth->fetchrow_arrayref ) {
....
}
创建一个循环
SELECT * FROM my_table LIMIT 0, 1
然后下一次将你的限制增加一个
SELECT * FROM my_table LIMIT 1, 1