2012-09-08 57 views
1

我有一大堆記錄的MySQL表,有沒有一種簡單的方法將它導出爲每一百萬條記錄的.CSV塊?導出數據塊中包含數億條記錄的MySQL表?

+0

你能分享爲什麼你想要塊?例如。導出時間過長(表格鎖定)還是需要進一步處理? – Till

+0

客戶希望能夠在Excel中打開某些範圍 –

回答

5

我會做到這一點(假設一些鎖具企業沒有打倒你的應用程序,否則,使用讀取從站):

mysqldump -u user -pPASS --skip-extended-insert --no-create-info --no-create-db --compact > your.sql 

這應該給你,每行INSERT語句的文件。

然後使用split

split -l 1000000 your.sql your-sql 

應該創建your-sql前綴的文件 - 100每。 split可在Linux,Unix和MacOSX上使用。

讓我知道這是否有幫助!

+0

)Sweeeeeet!斯普利特真棒。謝謝直到! –

+0

樂意幫忙! ;) – Till

4

未分塊,將工作一樣好,但這裏有一個解決方案:

SELECT * 
INTO OUTFILE 'file_0.csv' -- Change the filename here 
FIELDS 
    TERMINATED BY ',' 
    OPTIONALLY ENCLOSED BY '"' 
    ESCAPED BY '\\' 
    LINES TERMINATED BY '\n' 
FROM table 
WHERE id BETWEEN 0 AND 1000000 -- And change the range here 

請注意,要限制你的範圍與上索引where,否則你的數據庫將得到重負荷。

+0

任何方式來做到這一點,而無需手動更改每百萬的範圍? –

+0

您可以編寫一個腳本來自動執行此操作(可能使用MySQL中的存儲過程),除此之外,您可以將其導出並稍後拆分它。像Till在另一個答案中顯示的那樣。 Sweeeeeet!( – Wolph

相關問題