我試圖在MySQL Workbench中保存大約1,000,000條記錄的查詢結果。在MySQL Workbench中導出查詢結果超過1000條記錄
當我運行SELECT,只有1000條記錄顯示出來(MySQL工作臺的默認限制)。我知道我可以更改限制或刪除限制,但我不希望將1,000,000條記錄加載到結果面板(這可能會導致我的計算機崩潰?),但我確實希望將結果保存到文件中。
是否MySQL工作臺讓你查詢的結果直接保存到一個文件?或者保存整個結果集而不是1000?
我試圖在MySQL Workbench中保存大約1,000,000條記錄的查詢結果。在MySQL Workbench中導出查詢結果超過1000條記錄
當我運行SELECT,只有1000條記錄顯示出來(MySQL工作臺的默認限制)。我知道我可以更改限制或刪除限制,但我不希望將1,000,000條記錄加載到結果面板(這可能會導致我的計算機崩潰?),但我確實希望將結果保存到文件中。
是否MySQL工作臺讓你查詢的結果直接保存到一個文件?或者保存整個結果集而不是1000?
,能夠改變查詢結果行限制,或完全刪除的極限。
轉到編輯→首→ SQL編輯器(標籤)。如果您找不到查詢結果,請轉至SQL查詢(選項卡)。
找到查詢結果部分,取消勾選限行複選框
點擊OK。
重新運行查詢。
*「我試圖保存約1,000,000條記錄的查詢結果」*在這種情況下,我認爲取消限制是正確的行爲。 – vbence 2013-04-16 13:40:30
在MySQL Workbench 5.2中,他們將* Limit Rows *選項從'SQL Editor'移動到'SQL Queries'選項卡。 – 2014-01-16 22:08:25
在Ubuntu Linux上的MySQL Workbench 6.3上編輯'>'Preferences'>'SQL Editor'>'SQL Execution' – tenCupMaximum 2017-01-20 19:26:42
LOAD DATA INFILE
有一個叫做SELECT ... INTO OUTFILE的兄弟姐妹。您可以使用它:
SELECT * FROM mytable
INTO OUTFILE '/tmp/mytable.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n';
此方法不會在UI中使用不必要的資源。
由於@florian指出:它將,然而,在數據庫服務器上創建輸出文件,而不是在客戶機上。
還要注意的是安全框架,如SELinux的或AppArmor的可能會阻止MySQL的從寫標準數據庫以外的文件夾。如果您遇到權限被拒絕錯誤,即使該目錄可由mysql
用戶寫入,它可能是其中之一。
如果權限問題,我用這個選項去https://dev.mysql.com/doc/refman/5.5 /en/cannot-create.html – vsingh 2015-12-30 20:19:08
我還可以寫一個PHP腳本,它的查詢,並且輸出到CSV,但可能會崩潰,我的服務器過了吧?如果你fopen()追加,一個巨大的文件會有問題嗎? – 2012-04-23 21:41:34
我對工作臺並不熟悉,但是您可以編寫一個腳本,一次只獲得1000條記錄,每次只需正確設置偏移量(即第一次「限制0,1000」,第二次「限制1000,1000」然後是「LIMIT 2000,1000」等),每次將結果附加到文件中。無需將全部百萬條記錄保存在內存中,也不需要將它們全部寫入文件。 – 2012-04-23 21:46:06
另一個複雜因素是查詢本身必須引用其他記錄。它執行一個SUM()並在記錄被允許存在於結果集中之前用HAVING檢查SUM。所以我需要首先處理整個數據集,然後輸出它。 – 2012-04-23 22:30:31