2010-09-18 13 views

Odpowiedz

7

spróbować czegoś takiego:

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

Neat mały trick, a to działa na mnie.

Pierwotnie sugerowany here.

+0

Zauważ, że to ma być uruchamiane z linii poleceń systemu, a nie jako oświadczenie MySQL. – Mchl

+0

Mogę tylko uruchamiać instrukcje mysql, więc domyślam się, że to nie działa – aneuryzm

0

Spróbuj tego:

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; 

Got to od here. Szybkie i brudne, mówi. Z pewnością jest brudny. ;-)

+0

to nie działa .. mówi błąd synatax. Zgaduję, ponieważ: & gt; 0 – aneuryzm

+0

Bardziej prawdopodobne, ponieważ nie jest to MySQL. Taką procedurę można utworzyć w MySQL, używając information.schema zamiast sys.objects (i oczywiście składni zgodnej z MySQL dla zmiennych) – Mchl

0

Tutaj przykład, ale jest to dla MS SQL Server:

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 
Powiązane problemy