Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
drops all tables of a specific db
#!/bin/bash
#usage: mysql-drop-all-tables -d database -u dbuser -p dbpass
TEMP_FILE_PATH='./drop_all_tables.sql'
while getopts d:u:p: option
do
case "${option}"
in
d) DBNAME=${OPTARG};;
u) DBUSER=${OPTARG};;
p) DBPASS=${OPTARG};;
esac
done
echo "SET FOREIGN_KEY_CHECKS = 0;" > $TEMP_FILE_PATH
( mysqldump --add-drop-table --no-data -u$DBUSER -p$DBPASS $DBNAME | grep 'DROP TABLE' ) >> $TEMP_FILE_PATH
echo "SET FOREIGN_KEY_CHECKS = 1;" >> $TEMP_FILE_PATH
mysql -u$DBUSER -p$DBPASS $DBNAME < $TEMP_FILE_PATH
rm -f $TEMP_FILE_PATH
@jonataswalker

This comment has been minimized.

Copy link

commented Oct 11, 2018

Thank you dude, so useful!

@jchook

This comment has been minimized.

Copy link

commented Nov 16, 2018

Thanks for the code! I modified slightly to:

  • Support MariaDB's sudo style root access (no password)
  • Avoid writing to a temp file
#!/bin/bash
echo \
  "SET FOREIGN_KEY_CHECKS = 0;" \
  $(mysqldump --add-drop-table --no-data "$@" | grep 'DROP TABLE') \
  "SET FOREIGN_KEY_CHECKS = 1;" \
| mysql "$@"

Usage remains similar:

mysql-drop-all-tables [-udbuser] [-pdbpass] database
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.