pouet.net/bin/dump_SQL_for_dev
2013-05-12 00:17:00 -04:00

152 lines
4.5 KiB
Bash
Executable File

#!/bin/bash -e
# Dump some copyleft pouet.net data into a SQL text file
# Config
MYSQL_DB="pouet"
DUMP_FILE="pouet_with_sample_data.sql"
# Needed by sed to not throw out some warnings
LANG=C
# We have 3 types of tables:
# 1. Tables without any user FK with only public data: Full dump
# 2. Tables without any user FK without public data: Data-less dump
# 3. Tables with a user FK: Selective dump
function dump_tables_with_public_data()
{
TABLES=("affiliatedbbses"
"affiliatedprods"
"awardscand_2007"
"awardscand_2008"
"awardscand_2010"
"awardscand_2011"
"bbses_platforms"
"bbsesaka"
"buttons"
"cdc"
"credits"
"downloadlinks"
"faq"
"groupsaka"
"links"
"listitems"
"news"
"ojnews"
"partiesaka"
"partylinks"
"platforms"
"prodotherparty"
"prods_platforms"
"sceneorgrecommended")
ssh pouet mysqldump --skip-lock-tables \
--result-file=tmp/tables_with_public_data.sql \
$MYSQL_DB \
${TABLES[*]}
}
function dump_tables_without_data()
{
TABLES=("editrequests"
"gloperator_log"
"prods_refs"
"ud")
ssh pouet mysqldump --skip-lock-tables \
--result-file=tmp/tables_without_data.sql \
--no-data \
$MYSQL_DB \
${TABLES[*]}
}
function dump_tables_with_selective_data()
{
USERS_AGREEING=(1 # analogue
10 # rez
177 # psenough
619 # tomaes
3023 # psonice
3865 # visy
4950 # Preacher
5938 # randomi
7636 # xeron
20122 # PulkoMandy
29286 # xTr1m
42140) # vibrator
TMP_VAR=$(printf ",%s" "${USERS_AGREEING[@]}")
TMP_VAR=${TMP_VAR:1}
# Get the list of users in the format (1,2,3) to be used by INs
FILTER="($TMP_VAR)"
TABLES_WITH_COND=("bbs_ads;adder IN $FILTER OR added in $FILTER"
"bbs_posts;author IN $FILTER"
"bbs_topics;userfirstpost IN $FILTER OR userlastpost IN $FILTER"
"bbses;adder IN $FILTER"
"comments;who IN $FILTER"
"groups;added IN $FILTER"
"lists;adder IN $FILTER OR upkeeper IN $FILTER"
"logos;author1 IN $FILTER OR author2 IN $FILTER"
"logos_votes;user IN $FILTER"
"nfos;user IN $FILTER"
"oldnicks;user IN $FILTER"
"oneliner;who IN $FILTER"
"othernfos;adder IN $FILTER"
"parties;added IN $FILTER"
"prods;added IN $FILTER"
"screenshots;user IN $FILTER"
"users;id IN $FILTER"
"users_cdcs;user IN $FILTER"
"usersettings;id IN $FILTER")
# for i in a,b c,d ; do IFS=","; set $i; echo $1 $2; done
for TMP_VAR in "${TABLES_WITH_COND[@]}"
do IFS=";"
# Assign the good variables
set $TMP_VAR
TABLE="$1"
CONDITION="$2"
# Do the dump
ssh pouet mysqldump --skip-lock-tables \
--result-file=tmp/table_with_selective_data_$TABLE.sql \
--where=\"$CONDITION\" \
$MYSQL_DB \
$TABLE
done
}
# Make sure we are in the good folder
if [ ! -f COPYING ]
then
echo "Launch me in the root folder"
exit 1
fi
echo "Preparing the ground..."
ssh pouet "if [ ! -d tmp ] ; then mkdir tmp ; fi"
ssh pouet "rm -f tmp/*.sql tmp/$DUMP_FILE.gz"
echo "Dumping tables with public data..."
dump_tables_with_public_data
echo "Dumping tables without data..."
dump_tables_without_data
echo "Dumping tables with filtered data..."
dump_tables_with_selective_data
echo "Preparing the dump..."
ssh pouet "cat tmp/*.sql >> tmp/$DUMP_FILE"
ssh pouet "gzip tmp/$DUMP_FILE"
echo "Downloading the DDL..."
scp pouet:tmp/$DUMP_FILE.gz contribs/
gunzip -f contribs/$DUMP_FILE.gz
echo "Cleaning up the mess..."
ssh pouet "rm -f tmp/*.sql tmp/$DUMP_FILE.gz"
echo "Dump of the DDL completed in $DUMP_FILE"