From 521ed7391ef4336f17655aa36e063c4e44ed499b Mon Sep 17 00:00:00 2001 From: Kedar Date: Mon, 23 Feb 2015 17:43:44 +0530 Subject: [PATCH] Added database extraction and compression. --- mysqldumpsplitter.sh | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/mysqldumpsplitter.sh b/mysqldumpsplitter.sh index ab38012..47c658a 100644 --- a/mysqldumpsplitter.sh +++ b/mysqldumpsplitter.sh @@ -1,6 +1,6 @@ #!/bin/sh # http://kedar.nitty-witty.com -# Source: http://kedar.nitty-witty.com/blog/mydumpsplitter-extract-tables-from-mysql-dump-shell-script +# Ver 2 (added dump database & compression) #SPLIT DUMP FILE INTO INDIVIDUAL TABLE DUMPS # Text color variables txtund=$(tput sgr 0 1) # Underline @@ -17,18 +17,21 @@ txtrst=$(tput sgr0) # Text reset TARGET_DIR="." DUMP_FILE=$1 TABLE_COUNT=0 +COMPRESSION=gzip if [ $# = 0 ]; then echo "${txtbld}${txtred}Usage: sh MyDumpSplitter.sh DUMP-FILE-NAME${txtrst} -- Extract all tables as a separate file from dump." echo "${txtbld}${txtred} sh MyDumpSplitter.sh DUMP-FILE-NAME TABLE-NAME ${txtrst} -- Extract single table from dump." echo "${txtbld}${txtred} sh MyDumpSplitter.sh DUMP-FILE-NAME -S TABLE-NAME-REGEXP ${txtrst} -- Extract tables from dump for specified regular expression." + echo "${txtbld}${txtred} sh MyDumpSplitter.sh DUMP-FILE-NAME -d DATABASE-NAME ${txtrst} -- Extract complete database from dump." + exit; elif [ $# = 1 ]; then #Loop for each tablename found in provided dumpfile for tablename in $(grep "Table structure for table " $1 | awk -F"\`" {'print $2'}) do #Extract table specific dump to tablename.sql - sed -n "/^-- Table structure for table \`$tablename\`/,/^-- Table structure for table/p" $1 > $TARGET_DIR/$tablename.sql + sed -n "/^-- Table structure for table \`$tablename\`/,/^-- Table structure for table/p" $1 | $COMPRESSION > $TARGET_DIR/$tablename.sql.gz TABLE_COUNT=$((TABLE_COUNT+1)) done; elif [ $# = 2 ]; then @@ -36,7 +39,7 @@ elif [ $# = 2 ]; then do echo "Extracting $tablename..." #Extract table specific dump to tablename.sql - sed -n "/^-- Table structure for table \`$tablename\`/,/^-- Table structure for table/p" $1 > $TARGET_DIR/$tablename.sql + sed -n "/^-- Table structure for table \`$tablename\`/,/^-- Table structure for table/p" $1 | $COMPRESSION > $TARGET_DIR/$tablename.sql.gz TABLE_COUNT=$((TABLE_COUNT+1)) done; elif [ $# = 3 ]; then @@ -46,9 +49,14 @@ elif [ $# = 3 ]; then do echo "Extracting $tablename..." #Extract table specific dump to tablename.sql - sed -n "/^-- Table structure for table \`$tablename\`/,/^-- Table structure for table/p" $1 > $TARGET_DIR/$tablename.sql + sed -n "/^-- Table structure for table \`$tablename\`/,/^-- Table structure for table/p" $1 | $COMPRESSION > $TARGET_DIR/$tablename.sql.gz TABLE_COUNT=$((TABLE_COUNT+1)) done; + elif [ $2 = "-d" ]; then + echo "Extracting Database: $3..."; + sed -n "/^-- Current Database: \`$3\`/,/^-- Current Database: /p" $1 | $COMPRESSION > $TARGET_DIR/$3.sql.gz + echo "${txtbld} Database $3 extracted from $DUMP_FILE at $TARGET_DIR${txtrst}" + exit; else echo "${txtbld}${txtred} Please provide proper parameters. ${txtrst}"; fi @@ -56,4 +64,3 @@ fi #Summary echo "${txtbld}$TABLE_COUNT Table extracted from $DUMP_FILE at $TARGET_DIR${txtrst}" - \ No newline at end of file