A Bash function to check Drupal database sizes

At times I'd like to check the size of databases used by Drupal.

But I don't like to launch apps like phpMyAdmin and Sequel Pro only for that. So I wrote a tiny Bash function to check Drupal database sizes.

## Check the size of database used by Drupal (MySQL is expected).
function drupal_database_get_size {
  local drupal_db_name;
  drupal_db_name="$(drush sql-conf | grep "database" | grep -Eo "\S+$")"
  if [[ -z "$drupal_db_name" ]]; then
    echo "usage: run this command under a drupal instance directory."
    return
  fi

  $(drush sql-connect) -e "SELECT table_schema AS \"Database\", SUM(ROUND(((data_length + index_length) / 1024 / 1024), 2)) AS \"Size in MB\" FROM information_schema.TABLES  WHERE table_schema = \"$drupal_db_name\""
}

Let's give it a try.

Without a Drupal instance:

$ cd /path/out/of/drupal
$ drupal_database_get_size
Unable to load class Drush\Sql\Sql exception 'Drush\Sql\SqlException' with message 'Unable to find a matching SQL Class. Drush cannot find your database connection details. ...
...
usage: run this command under a drupal instance directory.

With a Drupal instance:

$ cd /path/to/drupal
$ drupal_database_get_size
mysql: [Warning] Using a password on the command line interface can be insecure.
+---------------+------------+
| Database      | Size in MB |
+---------------+------------+
| db_for_drupal |     119.20 |
+---------------+------------+

Woo-hoo!

You can use this function by adding the definition above into your Bash config file such as ~/.bashrc.