Khanh Hoang - Kenn
Kenn is a user experience designer and front end developer who enjoys creating beautiful and usable web and mobile experiences.
I backup databases, sometimes several times a week using drush.
$ drush sql-dump --result-file=backup.sql
(By the way, using the --result-file option instead of a redirect to prevent corrupting the charset in your data).
However, when reloading a backup I would always use the mysql command directly because drush doesn't have an import command. This means looking up the password and manually typing it in.
$ drush sql-connect mysql -hlocalhost -unathan -psomething some_database $ mysql -hlocalhost -unathan -psomething some_database < backup.sql
I finally figured out how to use drush for loading mysql dump files. From the command line you can convert the output of a command into a command itself, using the following syntax.
$ $(drush sql-connect) < backup.sql
Or, similarly, using the backtick character to wrap the command.
$ `drush sql-connect` < backup.sql
Export Database to File
So today I wanted to learn how to export a Drupal database to a file quickly. Back in the day I would've logged in through cPanel and navigated to PHPMyAdmin, then manually select an export of the database and have to choose where to save the file. Not to mention all the previous steps listed would need to be preceeded by a Drupal cache flush (I don't like the cache inside a database backup). Typically this would've taken me about 5 minutes to complete, well my friends, no longer is that the case. Behold the power of Drush (once you are ssh'd in and navigated to your drupal root directory)
drush cc drush sql-dump > ~/my-sql-dump-file-name.sql
Those two commands clear all the Drupal caches and then dump the sql database to a file in your home directory. Awesome sauce!
Download Database (optional)
If the sql dump file is on a remote server, you can use this terminal command to download a copy of the sql file:
scp [email protected]:~/my-sql-dump-file-name.sql ~/Desktop/
Import Database
You can use this command to import the sql dump back into your drupal database.
drush sql-drop drush sql-cli < ~/my-sql-dump-file-name.sql