Geralmente importo bancos de dados MySQL, e isso pode demorar um pouco. Não há nenhum indicador de progresso. Alguém pode ser mostrado, de alguma forma? Registros importados, MB importados ou tabelas importadas ... qualquer coisa é melhor do que apenas esperar. Alguém tem alguma ideia?
Eu uso este comando:
mysql -uuser -p -hhost database < largefile.sql
Os arquivos têm entre 40 e 300 MB e o host está na rede local.
pv
,cpipe
) funcionam neste cenário?pv
é exatamente o que o pesquisador procura. Acabei de instalar no CentOS via rpmforge. Se dada a dimensão -parameter ele vai mesmo mostrar uma ETA.pv
fez o truque de fato! Se alguém puder fazer disso uma resposta, eu posso aceitar!Respostas:
Existe uma boa ferramenta chamada
pv
então, por exemplo, você pode usá-lo assim
ps: consulte este blog http://blog.larsstrand.org/2011/12/tip-pipe-viewer.html
UPDATE: parece que o link acima está quebrado, mas eu encontrei o mesmo artigo aqui http://blog.larsstrand.no/2011/12/tip-pipe-viewer.html
ATUALIZAÇÃO 2: Solução ainda melhor com a barra de progresso COMPLETA. Para fazer isso, você precisa usar 2
pv
opções de compilação . Uma é--progress
indicar a barra de progresso e a segunda é--size
dizerpv
o tamanho do arquivo geral...o problema está no
.gz
tamanho do arquivo original. De alguma forma, você precisa obter as informações do tamanho do arquivo original descompactado sem descompactá-lo, caso contrário, perderá um tempo precioso para descompactar esse arquivo duas vezes (primeirapv
e segunda vezzcat
). Mas, felizmente, você tem agzip -l
opção que contém informações não compactadas sobre o arquivo gziped. Infelizmente você o possui no formato de tabela, portanto é necessário extrair antes de poder usá-lo. Todos juntos podem ser vistos abaixo:Uff .. então a última coisa que você precisa fazer é apenas combinar tudo.
Para torná-lo ainda melhor, você pode adicionar os programas NAME como este
Resultado final:
ATUALIZAÇÃO 3: Para uso rápido, crie uma função personalizada.
uso:
Se você não souber onde colocá-lo, leia esta resposta: /unix//a/106606/20056
Você pode adicionar funções entre aliases. Então você pode usar, por exemplo,
~/.bash_aliases
arquivo.fonte
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
Por que tão complicado?
Isso funciona bem:
fonte
Eu sempre importo bancos de dados do shell MySql. Ele não fornece um indicador de progresso, mas rola (rapidamente) as ações que está executando, para que eu saiba que está funcionando.
fonte