2010-09-18 10 views

Respuesta

7

intentar algo como esto:

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

truco poco, y que funciona para mí.

Originalmente sugerido here.

+0

Tenga en cuenta que esto es para ser ejecutado desde la línea de comandos del sistema, no como afirmación de MySQL. – Mchl

+0

Solo puedo ejecutar sentencias de mysql, así que supongo que esto no funciona – aneuryzm

0

Prueba esto:

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; 

Tienes esto desde here. Rápido y sucio, dice. Ciertamente está sucio. ;-)

+0

, no funciona ... dice error de synatax. Supongo que debido a: & gt; 0 – aneuryzm

+0

Es más probable porque no es MySQL. Un procedimiento como este se puede crear en MySQL, utilizando information.schema en lugar de sys.objects (y, por supuesto, sintaxis compatible con MySQL para las variables) – Mchl

0

Aquí un ejemplo, pero es para 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 
Cuestiones relacionadas