Ich importiere oft MySQL-Datenbanken, was eine Weile dauern kann. Es gibt keinerlei Fortschrittsanzeige. Kann man das irgendwie zeigen? Entweder Datensätze importiert, MB importiert oder Tabellen importiert ... alles ist besser als nur zu warten. Jemand eine Idee?
Ich benutze diesen Befehl:
mysql -uuser -p -hhost database < largefile.sql
Die Dateien sind zwischen 40 und 300 MB groß und der Host befindet sich im lokalen Netzwerk.
pv
,cpipe
) in diesem Szenario?pv
ist genau das, wonach der Fragesteller sucht. Ich habe es gerade über rpmforge auf CentOS installiert. Wenn die angegebene Größe -Parameter es sogar eine ETA zeigen.pv
tat den Trick in der Tat! Wenn jemand darauf eine Antwort geben kann, kann ich das akzeptieren!Antworten:
Es heißt schönes Werkzeug
pv
dann kannst du es zB so benutzen
ps: check this blog http://blog.larsstrand.org/2011/12/tip-pipe-viewer.html
UPDATE: Der obige Link scheint nicht zu funktionieren, aber ich habe den gleichen Artikel hier gefunden: http://blog.larsstrand.no/2011/12/tip-pipe-viewer.html
UPDATE 2: Noch bessere Lösung mit FULL Fortschrittsbalken. Dazu müssen Sie 2 eingebaute
pv
Optionen verwenden. Eine davon ist--progress
auf Fortschrittsbalken zu zeigen und zweite ist--size
zu sagen ,pv
wie groß die Gesamtdatei ist...das Problem ist mit der
.gz
ursprünglichen Dateigröße. Sie müssen die ursprünglichen Dateigrößeninformationen irgendwie entpacken, ohne sie selbst zu entpacken. Andernfalls verlieren Sie wertvolle Zeit, um diese Datei zweimal zu entpacken (zum ersten Malpv
und zum zweiten Malzcat
). Aber zum Glück haben Sie einegzip -l
Option, die unkomprimierte Informationen über unsere gziped-Datei enthält. Leider haben Sie es im Tabellenformat, so dass Sie es extrahieren müssen, bevor Sie es verwenden können. Alles zusammen ist unten zu sehen:Uff .. also das letzte, was Sie tun müssen, ist einfach alles zusammen zu kombinieren.
Um es noch schöner zu machen, können Sie Progres NAME so hinzufügen
Endergebnis:
UPDATE 3: Zur schnellen Verwendung können Sie benutzerdefinierte Funktionen erstellen.
Verwendung:
Wenn Sie nicht wissen, wo Sie es ablegen sollen, lesen Sie diese Antwort: /unix//a/106606/20056
Sie können Funktionen unter Aliase hinzufügen. So können Sie zB
~/.bash_aliases
Datei verwenden.quelle
pv --progress --name 'DB Import in progress' -tea /path/to/our/database.sql.gz | zcat | mysql -h db_host -u db_user -pdb_password db_name
Warum so kompliziert?
Das funktioniert gut:
quelle
Ich importiere immer Datenbanken aus der MySql-Shell. Es bietet keine Fortschrittsanzeige, führt aber (schnell) einen Bildlauf durch die durchgeführten Aktionen durch, damit ich weiß, dass sie funktionieren.
quelle