Import SQL avec barre de progression
Vous avez un dump sql de 15 Go à remonter sur votre base de données, vous le lancez et pendant de longues minutes vous contemplez quelque chose comme ceci :
$ zcat data-export.gz | mysql -u measuser -p -h db_host -P 3306 mydatabase
Enter password:
Est-ce que cela fonctionne ? Combien de temps avant la fin ? Est-ce que le terminal à freeze ?
Pipe View
pv
est un outil qui permet d’avoir en temps réel l’état d’avancement d’une tache ou d’un flux de données ( https://man7.org/linux/man-pages/man1/pv.1.html
).
Pour l’installer :
sudo apt install pv
Utilisation
La commande devient alors :
$ zcat data-export.gz | pv --progress --size $(zcat data-export.gz | wc -c) --name ' Importing.. ' \
| mysql -u measuser -p -h db_host -P 3306 mydatabase
Enter password:
Importing.. [=========> ] 15%
Et voilà ! Une barre de progression qui permet de savoir où en est l’import.
Attention : La commande $(zcat data-export.gz | wc -c)
qui permet d’avoir le taille en byte du fichier décompressé est longue. Elle lit tout le fichier. Cela peut être intéressant de la sortir pour ne l’exécuter qu’une seule fois.
Le truc est tiré de stackoverflow .
Edit 2021-12-20
Dans un commentaire
hg propose cette syntaxe qui laisse pv
gérer la taille du dump. À tester :
pv -pret --name ' Importing.. ' data-export.gz | zcat \
| mysql -u measuser -p -h db_host -P 3306 mydatabase