Odpowiedzi:
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.
~/.my.cnfprzy 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 pvi użyj:
pv mydump.sql.gz | gunzip | mysql -u root -p
W CentOS / RHEL możesz zainstalować pv za pomocą yum install pv.
W Debian / Ubuntu apt-get install pv.
W MAC brew 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!
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:
gunzip < myfile.sql.gz | mysql -u root -p mydb
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.
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ć gzcatzamiast tego, jak opisano na https://stackoverflow.com/questions/296717/zcat-wont-unzip-files-properly
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.
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:
bzcat <file> | mysql -u <user> -p <database>
LUB
pv <file> | bunzip2 | mysql -u <user> -p <database>
aby zobaczyć pasek postępu.
Możesz użyć -c, --stdout, --to-stdoutopcji gunzippolecenia
na przykład:
gunzip -c file.sql.gz | mysql -u root -p database