If you’ve been working with PHP/MySQL based websites for any amount of time, you’ve probably heard about the MySQL command line tools for importing and exporting your database.

The syntax is quite simple, for exports you run

mysqldump -udbuser -p dbname > dbfile.sql

which exports the database to a file on the local machine. For imports you run

mysql -udbuser -p dbname < dbfile.sql

which imports the contents of the local file (dbfile.sql) into the empty database.

This is usually the quickest way to export a database from one location to import it into another.

One problem I’ve experienced from time to time is exporting and importing large databases. By default the tools don’t output any progress indicator (or anything at all really), and using the -v (verbose) switch outputs every single MySQL command being run from the import file, which is like watching the code in the Matrix.

via GIPHY

Fortunately, there is a way you can run imports and exports and show a progress bar, with Pipe Viewer.

Pipe Viewer is a terminal-based tool for monitoring the progress of data through a pipeline. The Pipe Viewer homepage has all the install commands for the various operating systems, and Ubuntu has an official package for it, so you can install it through apt.

sudo apt-get install pv

Once pipe viewer is installed, you merely need to make two small changes to you import and export commands.

pv dbfile.sql | mysql -udbuser -p dbname
mysqldump -udbuser -p dbname | pv -W > dbfile.sql

And viola! You will be presented with a progress monitor that shows file size imported, time taken, percentage progress. Much better than staring at a blank screen.

Download WordPress.

Get Updates

Join my mailing list to receive the latest news and updates from me. No spam, just one email newsletter a month.

Thank you, you have successfully subscribed.