我希望能夠對小於100K行的表進行備份。我想要做的是將開發數據庫克隆到本地機器上,該機器具有許多不需要數據的日誌表和具有「合法」內容的表。選擇少於10萬行的MySQL表
因此,我將有一個只複製表結構的轉儲,另一個從少於100k行的這些表中複製相關數據。
如果我必須使用像Python或PHP這樣的中間語言,那麼我很好。
編輯:所以問題是,我如何創建從少於100k行的表的數據的mysql轉儲?
我希望能夠對小於100K行的表進行備份。我想要做的是將開發數據庫克隆到本地機器上,該機器具有許多不需要數據的日誌表和具有「合法」內容的表。選擇少於10萬行的MySQL表
因此,我將有一個只複製表結構的轉儲,另一個從少於100k行的這些表中複製相關數據。
如果我必須使用像Python或PHP這樣的中間語言,那麼我很好。
編輯:所以問題是,我如何創建從少於100k行的表的數據的mysql轉儲?
使用這樣的
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]
附:這一切都將需要在單行
p.s2:或者在每一行結尾加上\ \ – 2012-03-09 10:32:10
@Martin當然也可以工作:D – scibuff 2012-03-09 10:38:58
不幸的是,它沒有用,xargs抱怨單引號。 – StackOverflowed 2012-03-10 20:24:46
轉儲僅模式
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
糟糕的解決方案,因爲他根本不需要一些表格,並且您不知道在此後需要執行多少DROP TABLE語句。 – fancyPants 2012-03-09 11:39:44
所以,這裏有什麼問題? – Rahul 2012-03-09 10:22:33
太棒了!玩的開心。 – 2012-03-09 10:26:41
是否要在您的develepoment數據庫中包含所有表(包括日誌表),並且每個表的最大數量爲100k個條目,還是隻希望當前具有少於100k個條目的表? – 2012-03-09 12:45:15