A menudo importo bases de datos MySQL, y esto puede llevar un tiempo. No hay ningún indicador de progreso en absoluto. ¿Se puede mostrar uno, de alguna manera? Registros importados, MB importados o tablas importadas ... cualquier cosa es mejor que solo esperar. Alguien alguna idea?
Yo uso este comando:
mysql -uuser -p -hhost database < largefile.sql
Los archivos tienen entre 40 y 300 MB, y el host está dentro de la red local.
pv
,cpipe
) en este escenario?pv
es exactamente lo que busca el interlocutor. Lo acabo de instalar en CentOS a través de rpmforge. Si se le da el parámetro de tamaño , incluso mostrará una ETA.pv
hizo el truco de verdad! Si alguien puede responder esto, ¡puedo aceptarlo!Respuestas:
Hay una buena herramienta llamada
pv
entonces, por ejemplo, puedes usarlo así
ps: consulte este blog http://blog.larsstrand.org/2011/12/tip-pipe-viewer.html
ACTUALIZACIÓN: parece que el enlace anterior está roto pero encontré el mismo artículo aquí http://blog.larsstrand.no/2011/12/tip-pipe-viewer.html
ACTUALIZACIÓN 2: solución aún mejor con la barra de progreso COMPLETA. Para hacerlo, necesitas usar 2
pv
opciones de construcción . Una es--progress
indicar la barra de progreso y la segunda es--size
indicarpv
qué tan grande es el archivo general...el problema es con
.gz
el tamaño del archivo original. De alguna manera, necesita obtener la información del tamaño del archivo original sin descomprimirlo, de lo contrario perderá un tiempo precioso para descomprimir este archivo dos veces (la primera vezpv
y la segunda vezzcat
). Pero afortunadamente tiene unagzip -l
opción que contiene información sin comprimir sobre nuestro archivo gziped. Desafortunadamente, lo tiene en formato de tabla, por lo que debe extraerlo antes de poder usarlo. Todos juntos se pueden ver a continuación:Uff ... así que lo último que debes hacer es combinar todos juntos.
Para hacerlo aún mejor, puedes agregar progres NAME como este
Resultado final:
ACTUALIZACIÓN 3: Para un uso rápido, cree una función personalizada.
uso:
Si no sabe dónde colocarlo, lea esta respuesta: /unix//a/106606/20056
Puede agregar funciones entre alias. Para que pueda utilizar, por ejemplo, el
~/.bash_aliases
archivo.fuente
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 qué tan complicado?
Esto funciona bien:
fuente
Siempre importo bases de datos del shell MySql. No proporciona un indicador de progreso, pero sí (rápidamente) desplaza las acciones que está realizando, así que sé que está funcionando.
fuente