Est-il possible de faire mysqldump
en single SQL query
?
Je veux dire vider la base de données entière , comme phpmyadmin
lorsque vous exportez versSQL
Est-il possible de faire mysqldump
en single SQL query
?
Je veux dire vider la base de données entière , comme phpmyadmin
lorsque vous exportez versSQL
Réponses:
pas mysqldump, mais mysql cli ...
mysql -e "select * from myTable" -u myuser -pxxxxxxxxx mydatabase
vous pouvez le rediriger vers un fichier si vous le souhaitez:
mysql -e "select * from myTable" -u myuser -pxxxxxxxx mydatabase > mydumpfile.txt
Mise à jour: le message d'origine a demandé s'il pouvait vider la base de données par requête. Ce qu'il a demandé et ce qu'il a voulu dire était différent. Il voulait vraiment juste mysqldump toutes les tables.
mysqldump --tables myTable --where="id < 1000"
Cela devrait fonctionner
mysqldump --databases X --tables Y --where="1 limit 1000000"
--no-create-info
option. Voir ma réponse pour un exemple.
Vous pouvez vider une requête au format csv comme ceci:
SELECT * from myTable
INTO OUTFILE '/tmp/querydump.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
scp
fois la connexion terminée. voici un exemple. scp user@remote-server.com:/tmp/querydump.csv ~/local.csv
Vider une table à l'aide d'une requête where:
mysqldump mydatabase mytable --where="mycolumn = myvalue" --no-create-info > data.sql
Vider une table entière:
mysqldump mydatabase mytable > data.sql
Remarques:
mydatabase
, mytable
et l'instruction where par vos valeurs souhaitées.mysqldump
inclura les instructions DROP TABLE
et CREATE TABLE
dans sa sortie. Par conséquent, si vous ne souhaitez pas supprimer toutes les données de votre table lors de la restauration à partir du fichier de données enregistré, assurez-vous d'utiliser l' --no-create-info
option.-h
, -u
et des -p
options à l'exemple commandes ci - dessus afin de préciser votre base de données hôte souhaité, l' utilisateur et le mot de passe, respectivement.Vous pouvez utiliser l'option --where sur mysqldump pour produire une sortie que vous attendez:
mysqldump -u root -p test t1 --where="1=1 limit 100" > arquivo.sql
Au plus 100 lignes de test.t1 seront vidées de la table de base de données.
À la vôtre, WB
Si vous souhaitez exporter vos n derniers enregistrements dans un fichier, vous pouvez exécuter ce qui suit:
mysqldump -u user -p -h localhost --where "1=1 ORDER BY id DESC LIMIT 100" database table > export_file.sql
Ce qui précède enregistrera les 100 derniers enregistrements dans export_file.sql, en supposant que la table à partir de laquelle vous exportez possède une colonne d'identification auto-incrémentée.
Vous devrez modifier les valeurs utilisateur, localhost, base de données et table. Vous pouvez éventuellement modifier la colonne id et exporter le nom du fichier.
MySQL Workbench a également cette fonctionnalité parfaitement dans l'interface graphique. Exécutez simplement une requête, cliquez sur l'icône d'enregistrement à côté d'Export / Import:
Choisissez ensuite "Instructions SQL INSERT (* .sql)" dans la liste.
Entrez un nom, cliquez sur enregistrer, confirmez le nom de la table et vous aurez votre fichier de vidage.
Combiner une grande partie de ce qui précède ici est mon véritable exemple pratique, en sélectionnant des enregistrements en fonction de la métrique et de l'horodatage. J'ai besoin de cette commande depuis des années. S'exécute très rapidement.
mysqldump -uuser -ppassword main_dbo trHourly --where="MeterID =5406 AND TIMESTAMP<'2014-10-13 05:00:00'" --no-create-info --skip-extended-insert | grep '^INSERT' > 5406.sql
mysql Exporter la ligne de commande des résultats de la requête:
mysql -h120.26.133.63 -umiyadb -proot123 miya -e "select * from user where id=1" > mydumpfile.txt