2010-09-16 44 views
6

我想轉儲mysql數據庫只有有數據的表,你可以給我你的建議。這更有助於如何轉儲mysql數據庫?

感謝&問候, 瓦拉Kumar.PJD

+0

如果表不包含數據,也不會增加太多的備份尺寸。爲什麼你想跳過空表? – Jayan 2010-09-16 08:51:39

+0

有很多表,我不想執行空表查詢導入db中的數據。它會導致數據丟失的問題。 – 2010-09-16 09:12:32

+0

我的要求是刪除表並將數據從轉儲的數據庫文件插入到這些表中。該文件包含那些具有數據和創建的表格,以及add-drop語句。 – 2010-09-16 09:15:56

回答

2

可以使用--ignore-table選項,但你必須找出哪些表是空的第一個,因爲這是不能直接使用mysqldump。所以,你可以做

mysqldump -u username -p database --ignore-table=database.table1 --ignore-table=database.table2 > database.sql 
1
mysqldump <database options> table1 table2 table3 ... 
+0

有很多表,很難寫每一個。有沒有任何選項可以轉儲表與數據以及創建,下降語句 – 2010-09-16 09:10:03

0

使用mysqldumpdocumentation located here)。如果你不指定表,它將假定所有的表。您還可以明確選擇要複製或忽略的表格。您可以告訴它在create語句之前創建drop語句。如果你有mysql 5.1.2那麼你可以告訴它複製例程。

0

當你傾銷所有的數據庫。顯然它擁有大量的數據。所以,你可以在下面更喜歡更好:

創建備份:

mysqldump -u [user] -p[password]--single-transaction --quick --all-databases | gzip > alldb.sql.gz 

如果錯誤

- 警告:跳過表mysql.event的數據。顯式指定--events選項。

用途:

mysqldump -u [user] -p --events --single-transaction --quick --all-databases | gzip > alldb.sql.gz 

恢復備份:

gunzip < alldb.sql.gz | mysql -u [user] -p[password] 

希望這將有助於:)