我想保留t1,t2並刪除所有其他表。是否有MySQL命令來實現類似「除t1,b2之外的刪除表」?
回答
您可以使用information_schema
查找表名,甚至將結果格式化爲一堆DROP
語句。
SELECT CONCAT('DROP TABLE ', TABLE_NAME, '; ')
FROM information_schema.tables
WHERE table_schema = DATABASE() AND table_name NOT IN ('foo', 'bar', 'baz');
(該DATABASE()
函數返回當前use
「d數據庫)。
使用PREPARE
和EXECUTE
,你甚至可以避開復制粘貼&,以及(在MySQL 5.0.13及更高版本)寫一個存儲程序來做到這一點。
這就是我的意思。 :-)或者類似的東西。 – 2009-09-21 13:06:39
我會非常小心地把它放在實時代碼中。 刪除表通常是dbadmin或cron/control任務,而不是應編碼的內容。否則,絕對不應該將表的權利交給可能稍後易受XSS影響的實時代碼。 – 2009-09-21 13:27:42
你可以使用mysqldump生成DROP TABLE語句的列表,過濾掉你不想要的操作,然後管回入mysql客戶端。下面是我們如何構建起來
首先,這裏的數據庫
mysqldump -uUSERNAME -pPASSWORD--add-drop-table --no-data DATABASE| \
grep ^DROP
現在我們可以管,通過與-v grep來反轉匹配DROP TABLE表語句列表 - 我們要聲明其別「T何況我們保留(另一種方式來做到這一點是 - 忽略表選項mysqldump的)表
mysqldump -uUSERNAME -pPASSWORD--add-drop-table --no-data DATABASE| \
grep ^DROP |
grep -v 'foo\|bar'
最後,一旦你有信心,你可以通過管道將回到MySQL的
mysqldump -uUSERNAME -pPASSWORD--add-drop-table --no-data DATABASE| \
grep ^DROP | \
grep -v 'foo\|bar' | \
mysql -uUSERNAME -pPASSWORD DATABASE
- 1. cmd提示符中是否有類似於在Unix中刪除-d的命令?
- 2. 類似於DML刪除命令的SQL- DDL命令
- 3. 在MySql中刪除除了一個之外的所有表格
- 4. 是否有類似.NET的.call命令?
- 5. UNLOAD命令是否從紅移中刪除或刪除數據?
- 6. 在MongoDB中是否有類似MySQL的「set names」的命令?
- 7. 在VB.Net中是否有類似PHP mysql命令的過程?
- 8. Windows Cmd行刪除命令刪除除一個以外的所有文件
- 9. 是否有清除logcat的命令?
- 10. 在刪除表之前,我們是否真的需要刪除外鍵?
- 11. 是否有類似於iwevent的命令來監視eth0狀態?
- 12. ASP.NET sqldatasource - 除選擇,插入,更新和刪除之外是否還有其他sql命令?
- 13. 刪除mysql中除重複行之外的所有行
- 14. 除了InvokeScript之外,是否有類似於Windows Phone 8中的InvokeScriptAsync的函數?
- 15. 除了drupal中的面板之外,是否還有其他類似的模塊?
- 16. MySql的GridView的刪除命令
- 17. MySQL命令刪除表中的所有非主索引
- 18. mySQL意外的令牌刪除
- 19. MySQL的膩子命令刪除重複
- 20. MySQL刪除所有表,忽略外鍵
- 21. 丟棄類實例是否刪除MouseListener
- 22. 在第一個實例之前和之後刪除Sed命令
- 23. javascript中是否有unique()函數來刪除數組中的類似元素?
- 24. 任何MySQL命令複製除auto_increment列之外的行?
- 25. MySQL - 當表被刪除時,索引是否被刪除?
- 26. Fileinfo刪除命令
- 27. SQL刪除命令
- 28. SQL刪除命令?
- 29. MySQL刪除/組合類似行
- 30. 正常的刪除命令是否刪除這些記錄的索引?
如果你想刪除所有的表,但不是數據庫本身,你會用什麼?使用相同的技巧,但排除這些... – 2009-09-21 12:54:33
@Workshop亞歷克斯,抱歉,沒有抓住你。 – omg 2009-09-21 12:57:55
通常,當您想要刪除所有表格時,您只需刪除數據庫。 (這也將刪除可能會失效的存儲過程和視圖。)如果您只想刪除表格,則必須逐個刪除它們。如果你想刪除所有的,除了這兩個,你仍然必須逐一刪除它們,但跳過需要保留的刪除。 – 2009-09-21 13:08:24