2010-09-18 67 views

回答

7

嘗試這樣:

mysqldump -u[USERNAME] -p[PASSWORD] --add-drop-table --no-data [DATABASE] | grep ^DROP | mysql -u[USERNAME] -p[PASSWORD] [DATABASE] 

整潔的小動作,這對我的作品。

最初建議的here

+0

注意,這是從系統命令行中運行,而不是作爲MySQL的聲明。 – Mchl 2010-09-18 14:45:35

+0

我只能運行mysql語句,所以我猜這不起作用 – aneuryzm 2010-09-19 19:31:28

0

試試這個:

SELECT name INTO #tables from sys.objects where type = 'U' 
while (SELECT count(1) FROM #tables) > 0 
begin 
declare @sql varchar(max) 
declare @tbl varchar(255) 
SELECT top 1 @tbl = name FROM #tables 
SET @sql = 'drop table ' + @tbl 
exec(@sql) 
DELETE FROM #tables where name = @tbl 
end 
DROP TABLE #tables; 

here得到這個。它說,快速和骯髒。它當然很髒。 ;-)

+0

它不起作用..它說synatax錯誤。我猜是因爲:& gt; 0 – aneuryzm 2010-09-18 14:09:08

+0

更可能是因爲它不是MySQL。像這樣的過程可以在MySQL中創建,使用information.schema代替sys.objects(當然也可以使用MySQL兼容的變量語法) – Mchl 2010-09-18 14:33:14

0

這裏一個例子,但它是MS SQL服務器:

USE myBD -- user DB 

DECLARE tables_cursor CURSOR 
FOR SELECT name FROM sys.objects WHERE type = 'U' --carefull here 

OPEN tables_cursor 
DECLARE @tablename sysname 

FETCH NEXT FROM tables_cursor INTO @tablename 
WHILE (@@FETCH_STATUS != -1) 
BEGIN 
EXEC ('DROP TABLE ' + @tablename) 
FETCH NEXT FROM tables_cursor INTO @tablename 
END 

DEALLOCATE tables_cursor 
相關問題