Created
June 30, 2013 18:52
-
-
Save panique/5896376 to your computer and use it in GitHub Desktop.
This is a copy of the the excellent MySQLDumpSplitter shell script written by KEDAR from http://kedar.nitty-witty.com. As no professional tool was able to split my massive 22GB mysqldump file to multiple files (each one containing the whole statement for one table) and this little script did the job without any errors in short time, i think this…
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# http://kedar.nitty-witty.com | |
#SPLIT DUMP FILE INTO INDIVIDUAL TABLE DUMPS | |
# Text color variables | |
txtund=$(tput sgr 0 1) # Underline | |
txtbld=$(tput bold) # Bold | |
txtred=$(tput setaf 1) # Red | |
txtgrn=$(tput setaf 2) # Green | |
txtylw=$(tput setaf 3) # Yellow | |
txtblu=$(tput setaf 4) # Blue | |
txtpur=$(tput setaf 5) # Purple | |
txtcyn=$(tput setaf 6) # Cyan | |
txtwht=$(tput setaf 7) # White | |
txtrst=$(tput sgr0) # Text reset | |
TARGET_DIR="." | |
DUMP_FILE=$1 | |
TABLE_COUNT=0 | |
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." | |
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 | |
TABLE_COUNT=$((TABLE_COUNT+1)) | |
done; | |
elif [ $# = 2 ]; then | |
for tablename in $(grep -E "Table structure for table \`$2\`" $1| awk -F"\`" {'print $2'}) | |
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 | |
TABLE_COUNT=$((TABLE_COUNT+1)) | |
done; | |
elif [ $# = 3 ]; then | |
if [ $2 = "-S" ]; then | |
for tablename in $(grep -E "Table structure for table \`$3" $1| awk -F"\`" {'print $2'}) | |
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 | |
TABLE_COUNT=$((TABLE_COUNT+1)) | |
done; | |
else | |
echo "${txtbld}${txtred} Please provide proper parameters. ${txtrst}"; | |
fi | |
fi | |
#Summary | |
echo "${txtbld}$TABLE_COUNT Table extracted from $DUMP_FILE at $TARGET_DIR${txtrst}" | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thanks for preserving the old script though I've worked upon this and have the 5th version out recently.