Supprimer les données de toutes les tables dans MYSQL
J'ai 100 tables, de 40 000 lignes dans chaque table. Je veux aller dans MySQL et supprimer tous lignes de tous tables.
...dans 1 déclaration, si possible?
Je veux garder la base de données et des tables.
Vous devez vous connecter pour publier un commentaire.
Je ne crois pas (mais je suis mauvais avant). Ce que j'ai tendance à faire est de ces cas est un processus en deux étapes.
Si votre SGBD dispose d'une interface de ligne de commande, vous pouvez l'utiliser pour créer un script pour faire le gros du travail, quelque chose comme:
Le premier bit crée simplement un
p2.sh
fichier (ou unp2.cmd
fichier sous Windows) contenant undelete from
, pour chaque table appartenant àpax
. Ensuite il suffit de lancer la commande fichier pour faire le sale travail. Vous pouvez le vérifier en premier, bien sûr 🙂Pas le processus en une étape que vous recherchez, mais toujours très simple. Je suppose ici que mysql dispose également d'une interface de ligne de commande.
Mise à jour:
La version de MySQL de ce qui précède semble que ça devrait être:
Il utilise le
truncate
de commande qui est généralement plus efficace quedelete from
pour la suppression de toutes les lignes. Il utilise également le bon système MySQL tables pour obtenir les noms de table.Un point cependant, vous voudrez peut-être mettre un
where
clause sur sélectionner pour limiter les tables à ceux que vous voulez supprimer. La requête, comme il se va essayer de supprimer toutes les tables. Une possibilité est de limiter spécifiquestable_schema
et/outable_type
valeurs.Méthode la plus simple pour tronquer toutes les tables tout en conservant le schéma.
Ne sais pas si elle va conserver les procédures stockées comme ils ne sont pas en cours d'utilisation, où je travaille, mais je l'utilise régulièrement pour réinitialiser les bases de données.
La
-d
interrupteur sur commande mysqldump signifie "ne pas jeter de données."La
--add-drop-table
ajoute une instruction DROP TABLE pour CRÉER chaque TABLE dans la décharge.La plus robuste pour effacer toutes les tables dans une base de données a été soumis par kostanos dans Comment faire pour supprimer toutes les tables MySQL à partir de la ligne de commande sans TOMBER autorisations de base de données?
Depuis le code ci-dessous efface toutes les tables dans la base de données vous pouvez sélectionner une autre base de données avant de poursuivre.
L'extrait de code suivant supprime les données de la table, même en présence de contraintes de clés étrangères. Vous pouvez également double vérifier la liste des tables avant de nettoyage, juste au cas où si vous avez oublié de sélectionner la base de données appropriée.
Cela nécessitera une procédure stockée ou un script qui parcourt chaque table et n':
truncate table <tablename>
Pour obtenir la liste des tables de tronquer vous pouvez faire quelque chose comme:
Exporter le script SQL, supprimer la base de données, de recréer la base de données avec le script. 🙂
La
--no-data
commutateur ne conserve que la table de base de données de l'information, et ignore toutes les données de la table; il vous suffit simplement de réimporter l'généré.sql
fichier pour retrouver toutes les informations de la table.En ligne de commande...
J'ai du restaurer une sauvegarde, ce qui manquait les instructions de création. Donc j'ai restauré une sauvegarde plus ancienne, mais j'ai dû me débarrasser de ces données. Cette oneliner m'a aidé à tronquer tout.
Pour une meilleure lisibilité de nouveau avec des sauts de ligne:
assurez-vous d'utiliser la chaîne de caractères sans les sauts de ligne et de remplacer
myschema
avec votre schéma de table et régler correctement les identifiants de connexion de l'hôte ou pour mysql processus.user
,password
et db nommyschema
deux fois.C'est possible, mais il a des effets secondaires, vous ne pourriez pas aimer:
Il signifie que les structures des tables sont supprimés, ainsi que les index, procédures stockées, etc., etc.
La seule autre façon serait d'écrire une procédure stockée qui boucle en quelque sorte avec
Celui-ci travaille pour moi dans MySQL 5, et il est spécifique à des tables:
echo 'show tables' | mysql --skip-column-names -u root YOUR_DB | awk '{print "truncate table " $0 ";"}' | mysql -u root YOUR_DB
Remplacer YOUR_DB par le nom de votre base de données. Vous devez fournir votre mot de passe deux fois, alors vous avez une chance de réfléchir à nouveau ... 😉
Pourquoi ne pourrais que vous venez d'exporter la structure de la base de données, supprimez la base de données, puis de le recréer et d'importer la structure?
Commencer par accéder à phpMyAdmin via cPanel ou Plesk.
Ce que deux lignes de Script est le meilleur... l'essayer c'
Utiliser MySQL Workbench pour obtenir de l'Entité-Relation Schéma de votre base de données ( dans Workbench : Base de données -> Inverse de l'Ingénieur ). Ensuite, supprimez la base de données. Ensuite créer une base de données à l'aide du Workbench ( Base de données -> Avant de l'Ingénieur ).
Juste une supposition...l'essayer c'
TRUNCATE TABLE *;
Ou
TRUNCATE TABLE table1, table2, tableau3;
Ou
DELETE from table1, table2, tableau3 OÙ 1=1;