Mesmo ignorando o lado do gzip da questão, a sua seta está apontando o caminho errado ...
Matt Fletcher
Respostas:
238
zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database
>gravará a saída do mysqlcomando no stdoutarquivo myfile.sql.gzque provavelmente não é o que você deseja. Além disso, este comando solicitará a senha do usuário "root" do MySQL.
Como uma boa prática de segurança, eu colocaria minha senha na linha de comando, deixaria o mysql solicitá-la.
Moriarty
9
Ou melhor ainda: crie ~/.my.cnfcom as credenciais. ;)
Joschi
5
Como @Prof. Moriarty explans, você pode modificar o comando para não usar a senha via zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database. Ele saberá que o último parâmetro é o banco de dados que você deseja usar, não sua senha.
bafromca
6
Para corrigir um pouco o comentário do @ Prof.Moriarty, uma boa prática de segurança seria não colocar minha senha na linha de comando (onde ela será armazenada no histórico ou vista por cima do seu ombro) e deixar o MySQL solicitá-la. Somente o sinalizador -p fará com que o MySQL solicite a senha imediatamente.
George
4
+1 para algo que deixa o despejo de banco de dados maldita comprimido
Dmitri DB
81
Para exibir uma barra de progresso ao importar um arquivo sql.gz, faça o download pve use o seguinte:
pv mydump.sql.gz | gunzip | mysql -u root -p
No CentOS / RHEL, você pode instalar o pv com yum install pv.
pvparece estar nos repositórios Ubuntu também (pelo menos em 12.04 LTS), mas novamente você precisa fazer sudo apt-get install pvpara obtê-lo. Obrigado Banjer, isso é perfeito para grandes importações de banco de dados!
toon81
Eu tive que executar o pv mydump.sql.gz | gunzip | mysql -u root my_database_name. Isso foi porque eu estava importando tabelas e eu não ter uma senha definida para o meu usuário root
Cristiano Mendonça
No MAC,brew install pv
pontuação
54
A maneira mais simples é descompactar o arquivo do banco de dados antes da importação. Também como mencionado por @Prof. Moriarty, você não deve especificar a senha no comando (você será solicitado a senha). Este comando retirado do webcheatsheet descompactará e importará o banco de dados de uma só vez:
Além disso, o mydb precisa ser criado antes da importação. Isso não cria o banco de dados para você.
Siddhartha
Encontrei minha tubulação gunzipem um arquivo compactado de 10 GB que causou o congelamento da minha importação. Não tenho certeza se isso é devido a restrições de memória ou algo assim, mas eu iria errar por fazer um passo de cada vez no futuro.
Ryan Tuck
@RyanTuck que está empurrando os limites deste tipo de processos :)
icc97
@ Sidarta Isso depende do arquivo de despejo sql. Às vezes, eles incluem instruções de criação de banco de dados.
Verifique também se há alguma instrução USE no arquivo SQL. A especificação do banco de dados na linha de comando não garante que os dados sejam finalizados lá se um destino diferente for especificado no arquivo SQL.
Respostas:
>
gravará a saída domysql
comando nostdout
arquivomyfile.sql.gz
que provavelmente não é o que você deseja. Além disso, este comando solicitará a senha do usuário "root" do MySQL.fonte
~/.my.cnf
com as credenciais. ;)zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database
. Ele saberá que o último parâmetro é o banco de dados que você deseja usar, não sua senha.Para exibir uma barra de progresso ao importar um arquivo sql.gz, faça o download
pv
e use o seguinte:No CentOS / RHEL, você pode instalar o pv com
yum install pv
.No Debian / Ubuntu
apt-get install pv
.No MAC,
brew install pv
fonte
pv
parece estar nos repositórios Ubuntu também (pelo menos em 12.04 LTS), mas novamente você precisa fazersudo apt-get install pv
para obtê-lo. Obrigado Banjer, isso é perfeito para grandes importações de banco de dados!brew install pv
A maneira mais simples é descompactar o arquivo do banco de dados antes da importação. Também como mencionado por @Prof. Moriarty, você não deve especificar a senha no comando (você será solicitado a senha). Este comando retirado do webcheatsheet descompactará e importará o banco de dados de uma só vez:
fonte
gunzip
em um arquivo compactado de 10 GB que causou o congelamento da minha importação. Não tenho certeza se isso é devido a restrições de memória ou algo assim, mas eu iria errar por fazer um passo de cada vez no futuro.Se você receber um erro
zcat
, no qual a mensagem de erro contém o nome do arquivo com um sufixo extra.Z
, tente usá-logzcat
, conforme descrito em https://stackoverflow.com/questions/296717/zcat-wont-unzip-files-properlyfonte
No macOS, usei isso:
Digite sua senha e pronto!
fonte
Verifique também se há alguma instrução USE no arquivo SQL. A especificação do banco de dados na linha de comando não garante que os dados sejam finalizados lá se um destino diferente for especificado no arquivo SQL.
fonte
pv mydump.sql.gz | gunzip | mysql -u root -p
your_database
. A resposta aceita usa essa abordagem.Para arquivos compactados bzip2 (.sql.bz2), use:
OU
para ver a barra de progresso.
fonte
Você pode usar a
-c, --stdout, --to-stdout
opção degunzip
comandopor exemplo:
fonte