it-swarm.com.de

MySQL-Dump nach Abfrage

Ist es möglich, mysqldump mit single SQL query?

Ich meine, die ganze -Datenbank zu sichern, wie es phpmyadmin tut, wenn Sie nach SQL exportieren.

205
Jakub Arnold

nicht mysqldump, sondern mysql cli ...

mysql -e "select * from myTable" -u myuser -pxxxxxxxxx mydatabase

sie können es in eine Datei umleiten, wenn Sie möchten:

mysql -e "select * from myTable" -u myuser -pxxxxxxxx mydatabase > mydumpfile.txt

Update: Ursprünglicher Beitrag wurde gefragt, ob er per Abfrage aus der Datenbank löschen könne. Was er fragte und was er meinte, war anders. Er wollte wirklich nur alle Tabellen mit mysqldump sichern.

mysqldump --tables myTable --where="id < 1000"
265
Zak

Das sollte funktionieren

mysqldump --databases X --tables Y --where="1 limit 1000000"
247
Thomas Ahle

Sie können eine Abfrage wie folgt als CSV sichern:

SELECT * from myTable
INTO OUTFILE '/tmp/querydump.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
67
Guy

Eine Tabelle mit einer where-Abfrage sichern:

mysqldump mydatabase mytable --where="mycolumn = myvalue" --no-create-info > data.sql

Eine ganze Tabelle ausgeben:

mysqldump mydatabase mytable > data.sql

Anmerkungen:

  • Ersetzen Sie mydatabase, mytable und die where-Anweisung durch Ihre gewünschten Werte.
  • Standardmäßig enthält mysqldumpDROP TABLE und CREATE TABLE Anweisungen in seiner Ausgabe. Wenn Sie also nicht alle Daten in Ihrer Tabelle löschen beim Wiederherstellen aus der gespeicherten Datendatei verwenden möchten, stellen Sie sicher, dass Sie --no-create-info Möglichkeit.
  • Möglicherweise müssen Sie das entsprechende -h, -u, und -p Optionen zu den obigen Beispielbefehlen, um den gewünschten Datenbank-Host, den gewünschten Benutzer bzw. das gewünschte Kennwort anzugeben.
58
Gary

Sie können die Option --where in mysqldump verwenden, um eine Ausgabe zu erstellen, auf die Sie warten:

mysqldump -u root -p test t1 --where="1=1 limit 100" > arquivo.sql

Maximal 100 Zeilen aus test.t1 werden aus der Datenbanktabelle ausgegeben.

Prost, WB

38
Wagner Bianchi

Wenn Sie die letzten n Datensätze in eine Datei exportieren möchten, können Sie Folgendes ausführen:

mysqldump -u user -p -h localhost --where "1=1 ORDER BY id DESC LIMIT 100" database table > export_file.sql

Mit dem obigen Befehl werden die letzten 100 Datensätze in export_file.sql gespeichert, vorausgesetzt, die Tabelle, aus der Sie exportieren, enthält eine automatisch inkrementierte ID-Spalte.

Sie müssen die Werte für user, localhost, database und table ändern. Sie können optional die ID-Spalte und den Exportdateinamen ändern.

5
AUllah1

Vieles von dem oben Gesagten zu kombinieren, ist mein echtes praktisches Beispiel, Datensätze basierend auf Meterid und Zeitstempel auszuwählen. Ich habe diesen Befehl seit Jahren benötigt. Führt sehr schnell aus.

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
3
zzapper

MySQL Workbench bietet diese Funktion auch in der Benutzeroberfläche. Führen Sie einfach eine Abfrage aus und klicken Sie auf das Speichern-Symbol neben Exportieren/Importieren:

enter image description here

Wählen Sie dann "SQL INSERT-Anweisungen (* .sql)" in der Liste.

enter image description here

Geben Sie einen Namen ein, klicken Sie auf Speichern, bestätigen Sie den Tabellennamen, und Sie erhalten Ihre Sicherungsdatei.

3
MPelletier