From 2cd07d308c7a218bba0e321fa59f3d54d5c522ef Mon Sep 17 00:00:00 2001 From: Tom Willemse Date: Mon, 10 Mar 2014 20:32:10 +0100 Subject: Initial commit --- README.org | 7 +++++++ copydb | 44 ++++++++++++++++++++++++++++++++++++++++++++ copydb-current-branch | 28 ++++++++++++++++++++++++++++ rebasedb | 40 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 119 insertions(+) create mode 100644 README.org create mode 100755 copydb create mode 100755 copydb-current-branch create mode 100755 rebasedb diff --git a/README.org b/README.org new file mode 100644 index 0000000..b99350e --- /dev/null +++ b/README.org @@ -0,0 +1,7 @@ +Some simple utilities for working with MySQL databases. + +- copydb :: Create a copy of a database under a new name. +- copydb-current-branch :: Create a copy of a database under a new + name based on the current git branch. Requires =copydb=. +- rebasedb :: Destroy and recreate a database based on another + database. diff --git a/copydb b/copydb new file mode 100755 index 0000000..df05f44 --- /dev/null +++ b/copydb @@ -0,0 +1,44 @@ +#!/bin/zsh +## copydb --- Create a copy of a database under a new name + +## Commentary: + +# Create a copy of the database specified as the first argument as a +# new database named by the second argument. Making usage: + +# copydb + +# This doesn't try to check for any existing information, it just +# tries to create and copy. It is up to the user to make sure that +# that can actually be done. + +# During execution it asks for the root password of MySQL so it can +# create a new database. It will also ask for another user and its +# password to load the database with, this may still be the same user, +# but allows one to specify different users if necessary. + +## Code: + +echo -n 'Database root PW (for DB creation): ' +read -s ROOTPW +echo + +echo -n 'Database user for new DB: ' +read DBUSER + +echo -n 'Database user PW for new DB: ' +read -s DBPASSW +echo + +mysql -u root -p"$ROOTPW" -B <'. + +# This program is just a wrapper for `copydb', so all information +# related to it is also relevant, please read its comments for more +# info. + +# Usage is: + +# copydb-current-branch + +## Code: + +base="aeos_babel" +branch=$(git branch --no-color | grep '*' | sed -e 's/* //' -e 's/-/_/g') +nbranch="aeos_${branch}" + +echo Copying "$base" to "$nbranch" +copydb "$base" "$nbranch" diff --git a/rebasedb b/rebasedb new file mode 100755 index 0000000..8d80a8a --- /dev/null +++ b/rebasedb @@ -0,0 +1,40 @@ +#!/bin/zsh +## rebasedb --- Recreate a database based on another database. + +## Commentary: + +# Recreate the database specified as the first parameter based on the +# database named by the second parameter. Basically this deletes the +# database named by the first argument and then copies the database +# named by the second argument into its place. + +# This command asks for the password of the root user to drop, create +# and fill the database. It is assumed that the proper rights have +# been specified before and that they will be carried over. + +# For usage information run the program without any arguments. + +## Code: + +if [ ! ${#@} -eq 2 ]; then + echo "Usage: $(basename $0) [todb] [fromdb]" + echo + echo "Rebases TODB on FROMDB so that TODB holds the same schema and " + echo "information as FROMDB" + exit 1 +fi + +echo -n 'Database root PW (for DB manipulation): ' +read -s ROOTPW +echo + +mysql -u root -p"$ROOTPW" -B <