Frage Wie lade ich eine sql.gz-Datei in meine Datenbank? (Importieren)


Ich versuche, eine gezippte SQL-Datei direkt in mysql zu importieren. Ist das der richtige Weg?

mysql -uroot -ppassword mydb > myfile.sql.gz

118
2018-05-03 07:06


Ursprung


Auch wenn Sie die gzip-Seite der Frage ignorieren, zeigt Ihr Pfeil in die falsche Richtung ... - Matt Fletcher


Antworten:


zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database

> schreibt die Ausgabe der mysql Befehl an stdout in die Datei myfile.sql.gz was höchstwahrscheinlich nicht das ist, was Sie wollen. Zusätzlich fordert dieser Befehl Sie zur Eingabe des Passwortes des MySQL-Benutzers "root" auf.


186
2018-05-03 07:10



Als gute Sicherheitsvorkehrung würde ich mein Passwort in die Befehlszeile setzen, ich würde MySQL darum bitten lassen. - Prof. Moriarty
Oder noch besser: Erstellen ~/.my.cnf mit den Anmeldeinformationen. ;) - joschi
Als @Prof. Moriarty erklärt, Sie können den Befehl ändern, um das Passwort nicht zu verwenden zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database. Es wird wissen, dass der letzte Parameter die Datenbank ist, die Sie verwenden möchten, nicht Ihr Passwort. - bafromca
Um @ ProfessorMoriartys Kommentar leicht zu korrigieren, wäre eine gute Sicherheitsvorkehrung nicht setze mein Passwort in die Befehlszeile (wo es in der Historie gespeichert wird oder über deine Schulter gesehen wird) und lass MySQL danach fragen. Das Flag -p bewirkt, dass MySQL nach dem Passwort fragt. - George
+1 für etwas, das den verdammten Datenbankspeicherauszug komprimiert lässt - Dmitri DB


Um eine Statusleiste beim Importieren einer sql.gz-Datei anzuzeigen, laden Sie sie herunter pv und benutze folgendes:

pv mydump.sql.gz | gunzip | mysql -u root -p

In CentOS / RHEL können Sie pv mit installieren yum install pv.

In Debian / Ubuntu apt-get install pv.

In MAC, brew install pv


66
2017-11-03 19:46



pv scheint auch in den Ubuntu-Repos zu sein (zumindest in 12.04 LTS ist es), aber wieder müssen Sie tun sudo apt-get install pv es bekommen. Danke Banjer, das ist perfekt für große Datenbankimporte! - toon81
Ich musste pv mydump.sql.gz | gunzip | mysql -u root my_database_name. Das lag daran, dass ich Tabellen importierte und für meinen Root-Benutzer kein Passwort eingerichtet hatte - Cristiano Mendonça
In MAC, brew install pv - score


Der einfachste Weg besteht darin, die Datenbankdatei vor dem Import zu entpacken. Auch wie von @Prof. Moriarty Sie sollten das Passwort nicht im Befehl angeben (Sie werden nach dem Passwort gefragt). Dieser Befehl stammt von Webcheatsheet entpackt und importiert die Datenbank auf einmal:

gunzip < myfile.sql.gz | mysql -u root -p mydb

47
2017-11-22 15:51



Außerdem muss meindb vor dem Importieren erstellt werden. Dies erstellt nicht die Datenbank für Sie. - Siddhartha
Ich habe meine Rohrleitungen gefunden gunzip Bei einer komprimierten 10-GB-Datei wurde mein Import eingefroren. Ich bin mir nicht sicher, ob das auf Speicherbeschränkungen oder etwas anderes zurückzuführen ist, aber ich würde mich irren, wenn ich in der Zukunft einen Schritt nach dem anderen mache. - Ryan Tuck
@RyanTuck Das treibt die Grenzen dieser Art von Prozessen :) - icc97
@Siddhartha Das hängt von der SQL-Dump-Datei ab. Manchmal enthalten sie Datenbankanweisungen. - rooby
@rooby das macht Sinn. - Siddhartha


Wenn Sie einen Fehler von erhalten zcat, in dem die Fehlermeldung den Dateinamen mit einem zusätzlichen Suffix enthält .Z, dann versuche es mit gzcat stattdessen, wie beschrieben bei https://stackoverflow.com/questions/296717/zcat-wont-unzip-files-properly


10
2017-07-08 13:59





Überprüfen Sie außerdem, ob eine USE-Anweisung in der SQL-Datei vorhanden ist. Die Angabe der Datenbank in der Befehlszeile garantiert nicht, dass die Daten dort landen, wenn in der SQL-Datei ein anderes Ziel angegeben wird.


3
2018-05-03 11:28



Sie müssen nur den Befehl wie folgt erweitern: pv mydump.sql.gz | gunzip | mysql -u root -p  your_database. Die akzeptierte Antwort verwendet diesen Ansatz. - bafromca


Auf MacOS habe ich folgendes verwendet:

zcat < [Database].sql.gz | mysql -u root -p [Database Name in MySQL]

Gib dein Passwort ein und voila!


3
2017-11-28 07:41





Zum bzip2 komprimierte Dateien (.sql.bz2), verwenden Sie:

bzcat <file> | mysql -u <user> -p <database>

ODER

pv <file> | bunzip2 | mysql -u <user> -p <database>

um den Fortschrittsbalken zu sehen.


1
2017-08-01 15:25





Sie können verwenden -c, --stdout, --to-stdout Option von gunzip Befehl

zum Beispiel:

gunzip -c file.sql.gz | mysql -u root -p database

0
2017-09-16 06:03