Nawet ignorując gzipową stronę pytania, twoja strzała wskazuje niewłaściwy kierunek ...
Matt Fletcher
Odpowiedzi:
238
zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database
>zapisze dane wyjściowe mysqlpolecenia stdoutw pliku, myfile.sql.gzco najprawdopodobniej nie jest tym, czego chcesz. Dodatkowo, to polecenie wyświetli monit o podanie hasła użytkownika „root” MySQL.
Jako dobrą praktykę bezpieczeństwa umieściłem moje hasło w linii poleceń, pozwoliłem mysql o to poprosić.
Prof. Moriarty
9
Lub jeszcze lepiej: twórz ~/.my.cnfprzy użyciu poświadczeń. ;)
joschi
5
Jako @Prof. Moriarty wyjaśnia, możesz zmodyfikować polecenie, aby nie używać hasła przez zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database. Będzie wiedział, że ostatnim parametrem jest baza danych, której chcesz użyć, a nie hasło.
bafromca
6
Aby delikatnie poprawić komentarz @ Prof. Moriarty'ego, dobrą praktyką bezpieczeństwa byłoby nie umieszczanie mojego hasła w linii poleceń (gdzie zostanie zapisane w historii lub widoczne przez ramię) i pozwolenie MySQL o to poprosić. Sama flaga -p spowoduje, że MySQL zapyta o hasło.
George,
4
+1 za coś, co pozostawia cholerny zrzut bazy danych skompresowany
Dmitri DB
81
Aby wyświetlić pasek postępu podczas importowania pliku sql.gz, pobierz pvi użyj:
pv mydump.sql.gz | gunzip | mysql -u root -p
W CentOS / RHEL możesz zainstalować pv za pomocą yum install pv.
pvwydaje się, że jest też w repozytoriach Ubuntu (przynajmniej w 12.04 LTS), ale znowu musisz to zrobić, sudo apt-get install pvaby je zdobyć. Dzięki Banjer, jest to idealne rozwiązanie do importowania dużych baz danych!
toon81
Musiałem uruchomić pv mydump.sql.gz | gunzip | mysql -u root nazwa_bazy_danych. To dlatego, że importowałem tabele i nie mam hasła dla mojego roota
Cristiano Mendonça
W MAC,brew install pv
wynik
54
Najprostszym sposobem jest rozpakowanie pliku bazy danych przed importem. Również wspomniane przez @Prof. Moriarty , nie powinieneś podawać hasła w poleceniu (zostaniesz poproszony o podanie hasła). To polecenie pobrane z arkusza kontrolnego web rozpakowuje i importuje bazę danych za jednym razem:
Ponadto przed importem należy utworzyć mydb. To nie tworzy dla ciebie bazy danych.
Siddhartha,
znalazłem, że moje gunzipprzesyłanie strumieniowe w skompresowanym pliku 10 GB spowodowało zawieszenie się importu. nie jestem pewien, czy jest to spowodowane ograniczeniami pamięci lub czymś innym, ale popełniłbym błąd, robiąc krok po kroku w przyszłości.
Ryan Tuck
@RyanTuck To przesuwa granice tego rodzaju procesów :)
icc97
@ Siddhartha To zależy od pliku zrzutu SQL. Czasami obejmują tworzenie instrukcji bazy danych.
Sprawdź także, czy w pliku SQL znajduje się instrukcja USE. Określenie bazy danych w wierszu polecenia nie gwarantuje, że dane tam znajdą się, jeśli w pliku SQL zostanie określone inne miejsce docelowe.
Odpowiedzi:
>
zapisze dane wyjściowemysql
poleceniastdout
w pliku,myfile.sql.gz
co najprawdopodobniej nie jest tym, czego chcesz. Dodatkowo, to polecenie wyświetli monit o podanie hasła użytkownika „root” MySQL.źródło
~/.my.cnf
przy użyciu poświadczeń. ;)zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database
. Będzie wiedział, że ostatnim parametrem jest baza danych, której chcesz użyć, a nie hasło.Aby wyświetlić pasek postępu podczas importowania pliku sql.gz, pobierz
pv
i użyj:W CentOS / RHEL możesz zainstalować pv za pomocą
yum install pv
.W Debian / Ubuntu
apt-get install pv
.W MAC
brew install pv
źródło
pv
wydaje się, że jest też w repozytoriach Ubuntu (przynajmniej w 12.04 LTS), ale znowu musisz to zrobić,sudo apt-get install pv
aby je zdobyć. Dzięki Banjer, jest to idealne rozwiązanie do importowania dużych baz danych!brew install pv
Najprostszym sposobem jest rozpakowanie pliku bazy danych przed importem. Również wspomniane przez @Prof. Moriarty , nie powinieneś podawać hasła w poleceniu (zostaniesz poproszony o podanie hasła). To polecenie pobrane z arkusza kontrolnego web rozpakowuje i importuje bazę danych za jednym razem:
źródło
gunzip
przesyłanie strumieniowe w skompresowanym pliku 10 GB spowodowało zawieszenie się importu. nie jestem pewien, czy jest to spowodowane ograniczeniami pamięci lub czymś innym, ale popełniłbym błąd, robiąc krok po kroku w przyszłości.Jeśli pojawi się błąd
zcat
, w którym komunikat o błędzie zawiera nazwę pliku z dodatkowym sufiksem.Z
, spróbuj użyćgzcat
zamiast tego, jak opisano na https://stackoverflow.com/questions/296717/zcat-wont-unzip-files-properlyźródło
Na macOS użyłem tego:
Wpisz swoje hasło i voila!
źródło
Sprawdź także, czy w pliku SQL znajduje się instrukcja USE. Określenie bazy danych w wierszu polecenia nie gwarantuje, że dane tam znajdą się, jeśli w pliku SQL zostanie określone inne miejsce docelowe.
źródło
pv mydump.sql.gz | gunzip | mysql -u root -p
your_database
. W przyjętej odpowiedzi zastosowano to podejście.W przypadku plików skompresowanych bzip2 (.sql.bz2) użyj:
LUB
aby zobaczyć pasek postępu.
źródło
Możesz użyć
-c, --stdout, --to-stdout
opcjigunzip
poleceniana przykład:
źródło