Odpowiedzi:
zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database
>
zapisze dane wyjściowe mysql
polecenia stdout
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.
~/.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:
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
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:
gunzip < myfile.sql.gz | mysql -u root -p mydb
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
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-stdout
opcji gunzip
polecenia
na przykład:
gunzip -c file.sql.gz | mysql -u root -p database