我想保留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. 類似於DML刪除命令的SQL- DDL命令
- 2. 在MySql中刪除除了一個之外的所有表格
- 3. UNLOAD命令是否從紅移中刪除或刪除數據?
- 4. Windows Cmd行刪除命令刪除除一個以外的所有文件
- 5. 在刪除表之前,我們是否真的需要刪除外鍵?
- 6. 是否有類似於iwevent的命令來監視eth0狀態?
- 7. ASP.NET sqldatasource - 除選擇,插入,更新和刪除之外是否還有其他sql命令?
- 8. 刪除mysql中除重複行之外的所有行
- 9. MySql的GridView的刪除命令
- 10. 除了InvokeScript之外,是否有類似於Windows Phone 8中的InvokeScriptAsync的函數?
- 11. MySQL命令刪除表中的所有非主索引
- 12. mySQL意外的令牌刪除
- 13. MySQL刪除所有表,忽略外鍵
- 14. 在第一個實例之前和之後刪除Sed命令
- 15. 丟棄類實例是否刪除MouseListener
- 16. javascript中是否有unique()函數來刪除數組中的類似元素?
- 17. MySQL - 當表被刪除時,索引是否被刪除?
- 18. SQL刪除命令
- 19. preg_replace刪除非打印字符似乎刪除所有外來字符以及
- 20. jQuery刪除除第一行之外的所有錶行
- 21. 是否可以刪除除少數幾個之外的所有會話變量?
- 22. 是否有可能從Hibernate Criteria中刪除命令?
- 23. 除了Web瀏覽器之外,是否還有W3C DOM的實現?
- 24. Mysql表格重命名:數據是否被刪除?
- 25. SQL刪除命令不實際刪除表中的任何記錄?
- 26. Java:實現MutableTreeNode,刪除類似的舊方法?
- 27. Mysql:按類似命令?
- 28. Hibernate中的級聯刪除:從表中刪除什麼命令?
- 29. 刪除類似的列表框項目
- 30. 是否有理由在擦除刪除語言之外使用`remove`?
如果你想刪除所有的表,但不是數據庫本身,你會用什麼?使用相同的技巧,但排除這些... – 2009-09-21 12:54:33
@Workshop亞歷克斯,抱歉,沒有抓住你。 – omg 2009-09-21 12:57:55
通常,當您想要刪除所有表格時,您只需刪除數據庫。 (這也將刪除可能會失效的存儲過程和視圖。)如果您只想刪除表格,則必須逐個刪除它們。如果你想刪除所有的,除了這兩個,你仍然必須逐一刪除它們,但跳過需要保留的刪除。 – 2009-09-21 13:08:24