2013-03-27 39 views
0

使用mysqldump,我可以將我的數據庫和錶轉儲到單獨的文件。Mysqldump拆分錶轉儲到更小的文件

我的問題是,有沒有辦法在mysqldump中將這些表文件拆分成更小的部分?

因此,而不是一個10GB的.sql文件,我會得到同一個表的10個1GB .sql文件?

+1

重複與http://stackoverflow.com/questions/132902/how-do-i-split-the-output-from-mysqldump-into-smaller-files – miah 2013-03-27 14:57:32

回答

1

您可以使用MySQL Dump從查詢中獲取數據,但是當您需要將數據拆分爲特定大小的塊時,我總是發現難以管理。

正如你想要的1Gb文件,這裏是我如何將表分成1Gb段。

我用INTO OUTFILE但MySQL的轉儲也可以在這個階段

SELECT * FROM table 
ORDER BY adminid ASC 
INTO OUTFILE 'c:/table.csv' 
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"' 
LINES TERMINATED BY 

如果你正在使用Windows使用這真的沒啥好分割工具,所以我會建議GNU核心工具包http://gnuwin32.sourceforge.net/packages/coreutils.htm

安裝就可以使用split從命令提示符

cd C:\Program Files (x86)\GnuWin32\bin 
split -C 1024m -d c:\table.csv c:\table.part_ 

如果你之後使用Linux你已經可以訪問一個好的分割util。

如果您導出它們,您可能會希望在某些時候再次導入它們 - 這是行末處的.part_的重要位置,因爲mysqlimport試圖找出要導入的表名,。可以用來拆分表,但允許多個文件導入到同一個數據庫表中。

這些然後可以使用需要

mysqlimport --local --compress --user=username --password=password --host=dbserver.host --fields-terminated-by=, --fields-optionally-enclosed-by="\"" --lines-terminated-by="\n" databasename c:\table.csv 

--local否則mysqlimport的希望找到遠程主機

--compress是非常重要的文件,這樣可以節省大量的帶寬

+0

真正的答案是否定的,你不能。當然,我可以使用「拆分」,但這不是mysql轉儲的一部分。接受的答案,因爲這是最好的選擇 – 2013-03-29 18:53:55

1

你進口可以將@jason完全轉儲到表和數據庫中。 您可以使用mysql-dump-splitter來提取您選擇的表/數據庫。在轉儲過程 您也可以按如下方式使用過濾器:

Dump all data for 2015: 
mysqldump --all-databases --where= "DATEFIELD >= '2014-01-01' and DATEFIELD < '2015-01-01' " | gzip > ALLDUMP.2015.sql.gz 

只要你應有的DateField列中的所有表! 或者,您也可以指定ID列來限制轉儲,以僅提取指定範圍的ID。

相關問題