Comment puis-je supprimer toutes les tables de ma base de données?Comment puis-je supprimer toutes les tables de ma base de données?
1) Dans une commande MYSQL
2) sans détruire et de créer la base de données?
Merci
Comment puis-je supprimer toutes les tables de ma base de données?Comment puis-je supprimer toutes les tables de ma base de données?
1) Dans une commande MYSQL
2) sans détruire et de créer la base de données?
Merci
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.
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. ;-)
cela ne fonctionne pas .. il est dit erreur synatax. Je suppose à cause de: & gt; 0 – aneuryzm
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
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
Notez que ce doit être exécuté depuis la ligne de commande du système, et non comme MySQL déclaration. – Mchl
Je ne peux que lancer des instructions mysql, donc je suppose que cela ne fonctionne pas – aneuryzm