Selbst wenn Sie die GZIP-Seite der Frage ignorieren, zeigt Ihr Pfeil in die falsche Richtung ...
Matt Fletcher
Antworten:
238
zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database
>schreibt die Ausgabe des mysqlBefehls stdoutin die Datei, myfile.sql.gzdie höchstwahrscheinlich nicht das ist, was Sie wollen. Zusätzlich werden Sie mit diesem Befehl zur Eingabe des Passworts des MySQL-Benutzers "root" aufgefordert.
Als gute Sicherheitspraxis würde ich mein Passwort in die Kommandozeile eingeben und mysql danach fragen lassen.
Prof. Moriarty,
9
Oder noch besser: ~/.my.cnfMit den Zugangsdaten erstellen . ;)
joschi
5
Als @Prof. Moriarty explans, können Sie den Befehl ändern, um das Kennwort nicht über zu verwenden zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database. Der letzte Parameter ist die Datenbank, die Sie verwenden möchten, nicht Ihr Passwort.
bafromca
6
Um etwas richtig @ Prof.Moriarty Kommentar, wäre eine gute Sicherheitspraxis sein , um nicht mein Passwort auf der Kommandozeile zu setzen (wo es in der Geschichte gespeichert werden erhalten, oder über die Schulter zu sehen ist ), und lassen Sie MySQL danach fragen. Allein das -p-Flag veranlasst MySQL, bei einer Eingabeaufforderung nach dem Kennwort zu fragen.
George
4
+1 für etwas, das die verdammte Datenbank-Dump komprimiert lässt
Dmitri DB
81
Um beim Importieren einer sql.gz-Datei einen Fortschrittsbalken anzuzeigen, laden Sie pvFolgendes herunter und verwenden Sie Folgendes:
pv mydump.sql.gz | gunzip | mysql -u root -p
In CentOS / RHEL können Sie pv mit installieren yum install pv.
pvscheint auch in den Ubuntu-Repos zu sein (zumindest in 12.04 LTS ist es das), aber du musst es wieder tun sudo apt-get install pv, um es zu bekommen. Danke Banjer, das ist perfekt für große Datenbankimporte!
Toon81
Ich musste pv mydump.sql.gz | ausführen gunzip | mysql -u root mein_Datenbankname. Das lag daran, dass ich Tabellen importierte und kein Kennwort für meinen Root-Benutzer festgelegt habe
Cristiano Mendonça,
In MAC,brew install pv
Score
54
Am einfachsten ist es, die Datenbankdatei vor dem Import zu entpacken. Auch wie von @Prof erwähnt. In jedem Fall sollten Sie das Kennwort nicht im Befehl angeben (Sie werden nach dem Kennwort gefragt). Dieser Befehl aus dem Webcheatsheet entpackt und importiert die Datenbank auf einmal:
Außerdem muss mydb vor dem Import erstellt werden. Dadurch wird die Datenbank nicht für Sie erstellt.
Siddhartha,
Ich fand meine Rohrleitungen gunzipauf einer 10 GB komprimierten Datei verursacht mein Import zum Einfrieren. Ich bin mir nicht sicher, ob dies auf Speicherbeschränkungen oder etwas zurückzuführen ist, aber ich würde mich in Zukunft auf die Seite stellen, Schritt für Schritt vorzugehen.
Ryan Tuck
@ RyanTuck Das stößt an die Grenzen dieser Art von Prozessen :)
ICC97
@ Siddhartha Das hängt von der SQL-Dump-Datei ab. Manchmal enthalten sie Anweisungen zum Erstellen von Datenbanken.
Überprüfen Sie auch, ob die SQL-Datei eine USE-Anweisung enthält. Das Angeben der Datenbank in der Befehlszeile garantiert nicht, dass die Daten dort landen, wenn in der SQL-Datei ein anderes Ziel angegeben ist.
Sie müssen nur den Befehl verlängern , wie so: pv mydump.sql.gz | gunzip | mysql -u root -pyour_database. Die akzeptierte Antwort verwendet diesen Ansatz.
bafromca
1
Verwenden Sie für bzip2- komprimierte Dateien (.sql.bz2):
bzcat <file> | mysql -u <user> -p <database>
ODER
pv <file> | bunzip2 | mysql -u <user> -p <database>
Antworten:
>
schreibt die Ausgabe desmysql
Befehlsstdout
in die Datei,myfile.sql.gz
die höchstwahrscheinlich nicht das ist, was Sie wollen. Zusätzlich werden Sie mit diesem Befehl zur Eingabe des Passworts des MySQL-Benutzers "root" aufgefordert.quelle
~/.my.cnf
Mit den Zugangsdaten erstellen . ;)zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database
. Der letzte Parameter ist die Datenbank, die Sie verwenden möchten, nicht Ihr Passwort.Um beim Importieren einer sql.gz-Datei einen Fortschrittsbalken anzuzeigen, laden Sie
pv
Folgendes herunter und verwenden Sie Folgendes:In CentOS / RHEL können Sie pv mit installieren
yum install pv
.In Debian / Ubuntu
apt-get install pv
.In MAC,
brew install pv
quelle
pv
scheint auch in den Ubuntu-Repos zu sein (zumindest in 12.04 LTS ist es das), aber du musst es wieder tunsudo apt-get install pv
, um es zu bekommen. Danke Banjer, das ist perfekt für große Datenbankimporte!brew install pv
Am einfachsten ist es, die Datenbankdatei vor dem Import zu entpacken. Auch wie von @Prof erwähnt. In jedem Fall sollten Sie das Kennwort nicht im Befehl angeben (Sie werden nach dem Kennwort gefragt). Dieser Befehl aus dem Webcheatsheet entpackt und importiert die Datenbank auf einmal:
quelle
gunzip
auf einer 10 GB komprimierten Datei verursacht mein Import zum Einfrieren. Ich bin mir nicht sicher, ob dies auf Speicherbeschränkungen oder etwas zurückzuführen ist, aber ich würde mich in Zukunft auf die Seite stellen, Schritt für Schritt vorzugehen.Wenn Sie eine Fehlermeldung erhalten
zcat
, in der die Fehlermeldung den Dateinamen mit einem zusätzlichen Suffix enthält.Z
, versuchen Siegzcat
stattdessen die Verwendung , wie unter https://stackoverflow.com/questions/296717/zcat-wont-unzip-files-properly beschriebenquelle
Unter macOS habe ich Folgendes verwendet:
Geben Sie Ihr Passwort ein und voila!
quelle
Überprüfen Sie auch, ob die SQL-Datei eine USE-Anweisung enthält. Das Angeben der Datenbank in der Befehlszeile garantiert nicht, dass die Daten dort landen, wenn in der SQL-Datei ein anderes Ziel angegeben ist.
quelle
pv mydump.sql.gz | gunzip | mysql -u root -p
your_database
. Die akzeptierte Antwort verwendet diesen Ansatz.Verwenden Sie für bzip2- komprimierte Dateien (.sql.bz2):
ODER
Fortschrittsbalken zu sehen.
quelle
Sie können mit
-c, --stdout, --to-stdout
Optiongunzip
Befehlzum Beispiel:
quelle