Często importuję bazy danych MySQL, co może chwilę potrwać. Nie ma żadnego wskaźnika postępu. Czy można w jakiś sposób pokazać? Zaimportowane rekordy, zaimportowane MB lub tabele… wszystko jest lepsze niż czekanie. Czy ktoś ma pomysł?
Używam tego polecenia:
mysql -uuser -p -hhost database < largefile.sql
Pliki mają rozmiar od 40 do 300 MB, a host znajduje się w sieci lokalnej.
pv
,cpipe
) działają w tym scenariuszu?pv
dokładnie tego szuka pytający. Właśnie zainstalowałem go na CentOS za pośrednictwem rpmforge. Jeśli podano parametr wielkości , będzie nawet pokazywać ETA.pv
zrobił sztuczkę! Jeśli ktoś może udzielić odpowiedzi, mogę to zaakceptować!Odpowiedzi:
Jest ładne narzędzie o nazwie
pv
wtedy np. możesz użyć tego w ten sposób
ps: sprawdź ten blog http://blog.larsstrand.org/2011/12/tip-pipe-viewer.html
AKTUALIZACJA: wydaje się, że powyższy link jest uszkodzony, ale znalazłem ten sam artykuł tutaj http://blog.larsstrand.no/2011/12/tip-pipe-viewer.html
AKTUALIZACJA 2: Jeszcze lepsze rozwiązanie z PEŁNYM paskiem postępu. Aby to zrobić, musisz użyć 2 wbudowanych
pv
opcji. Jednym z nich jest--progress
, aby wskazać pasek postępu a drugi jest--size
, aby powiedziećpv
, jak duży plik jest całkowita... problem dotyczy
.gz
oryginalnego rozmiaru pliku. Potrzebujesz w jakiś sposób uzyskać informacje o oryginalnym rozmiarze rozpakowanego pliku bez samodzielnego rozpakowywania, w przeciwnym razie stracisz cenny czas na dwukrotne rozpakowanie tego pliku (za pierwszym razempv
i za drugim razemzcat
). Ale na szczęście maszgzip -l
opcję, która zawiera nieskompresowane informacje o naszym pliku spakowanym gzipem. Niestety masz go w formacie tabeli, więc musisz go rozpakować, zanim będzie można go użyć. Wszystko razem można zobaczyć poniżej:Uff ... więc ostatnią rzeczą, którą musisz zrobić, to po prostu połączyć wszystko razem.
Aby było jeszcze przyjemniej, możesz dodać progres NAME w ten sposób
Ostateczny wynik:
AKTUALIZACJA 3: W celu szybkiego użycia utwórz niestandardową funkcję.
stosowanie:
Jeśli nie wiesz, gdzie go umieścić, przeczytaj tę odpowiedź: /unix//a/106606/20056
Możesz dodawać funkcje między aliasami. Możesz więc użyć np
~/.bash_aliases
. Pliku.źródło
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
Dlaczego tak skomplikowane?
Działa to dobrze:
źródło
Zawsze importuję bazy danych z powłoki MySql. Nie zapewnia wskaźnika postępu, ale (szybko) przewija wykonywane czynności, więc wiem, że działa.
źródło