2012-03-09 52 views
2

我希望能夠對小於100K行的表進行備份。我想要做的是將開發數據庫克隆到本地機器上,該機器具有許多不需要數據的日誌表和具有「合法」內容的表。選擇少於10萬行的MySQL表

因此,我將有一個只複製表結構的轉儲,另一個從少於100k行的這些表中複製相關數據。

如果我必須使用像Python或PHP這樣的中間語言,那麼我很好。

編輯:所以問題是,我如何創建從少於100k行的表的數據的mysql轉儲?

+1

所以,這裏有什麼問題? – Rahul 2012-03-09 10:22:33

+1

太棒了!玩的開心。 – 2012-03-09 10:26:41

+0

是否要在您的develepoment數據庫中包含所有表(包括日誌表),並且每個表的最大數量爲100k個條目,還是隻希望當前具有少於100k個條目的表? – 2012-03-09 12:45:15

回答

2

使用這樣的

mysql databasename -u [root] -p[password] —disable-column-names -e 
    'select table_name from information_schema.tables where table_rows < 100000;' 
    | xargs mysqldump [databasename] -u [root] -p[password] > [target_file] 

附:這一切都將需要在單行

+1

p.s2:或者在每一行結尾加上\ \ – 2012-03-09 10:32:10

+1

@Martin當然也可以工作:D – scibuff 2012-03-09 10:38:58

+0

不幸的是,它沒有用,xargs抱怨單引號。 – StackOverflowed 2012-03-10 20:24:46

0

轉儲僅模式

mysqldump --user=dbuser --password --no-data --tab=/tmp dbname 

或嘗試seperately出口模式和數據各表下面的命令

mysqldump --user=dbuser --password --tab=/tmp dbname 

或者

mysqldump --opt --where="1 limit 100000" database > fileName.sql 

這會給你從每個表100K行。

忽略一些表

mysqldump --opt --where="1 limit 100000" --ignore-table=database.table1 
--ignore-table=database.table2 database > fileName.sql 
+0

糟糕的解決方案,因爲他根本不需要一些表格,並且您不知道在此後需要執行多少DROP TABLE語句。 – fancyPants 2012-03-09 11:39:44