2012-04-11 84 views
0

我想執行某些選擇(正如我在sqldeveloper中測試的)將檢索大量數據(〜350,000行)。最後,我想將這些行寫入一個文件。SQL - 如何一次選擇一行?

我打算寫一個PERL代碼來做它,我想知道是否有辦法一次檢索一行,把它寫到我的輸出文件並繼續到下一行。

也就是說,我想得到與我原來的選擇相同的結果,但以較小的塊。

謝謝!

+2

每個結果行你嘗試過什麼?試圖從數據庫中獲取更小的塊通常是錯誤的思考方式。試着編寫你的代碼並看看它是如何工作的。 – Mat 2012-04-11 07:47:17

回答

2

如果你認爲你可以支付執行查詢多少次,你可以使用

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

首次加入量以在下一次指數

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

你可以使用LIMIT 0,1得到一個記錄一次,但你有35萬條記錄......這是瘋狂的!

+0

爲什麼.....?它明顯要使用循環:) – Laksith 2015-12-18 02:45:32

0

創建循環

SELECT * FROM my_table LIMIT 0, 1 

,然後你說,下一次增加你的極限與一個

SELECT * FROM my_table LIMIT 1, 1 
2

我想知道是否有檢索一個辦法將其寫入我的輸出文件並繼續到下一行。

如果您只是想將數據導出到文件中,則應考慮使用SELECT ... INTO OUTFILE

它運行得比運行每個查詢要快得多。

2

你只需要使用

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

告訴MySQL驅動程序在內存中不加載整個結果。

接下來你只處理與

while (my $ary_ref = $sth->fetchrow_arrayref) { 

.... 
}