2010-09-18 8 views

Répondre

7

Essayez quelque chose comme ceci:

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

petite astuce, et ça marche pour moi.

Initialement suggéré here.

+0

Notez que ce doit être exécuté depuis la ligne de commande du système, et non comme MySQL déclaration. – Mchl

+0

Je ne peux que lancer des instructions mysql, donc je suppose que cela ne fonctionne pas – aneuryzm

0

Essayez ceci:

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; 

obtenu ceci de here. Rapide et sale, ça dit. C'est certainement sale. ;-)

+0

cela ne fonctionne pas .. il est dit erreur synatax. Je suppose à cause de: & gt; 0 – aneuryzm

+0

Plus probablement parce que ce n'est pas MySQL. Une procédure comme celle-ci peut être créée en MySQL, en utilisant information.schema à la place de sys.objects (et bien sûr syntaxe compatible MySQL pour les variables) – Mchl

0

Voici un exemple, mais il est pour 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 
Questions connexes