From 4ad84c0c47482f5982c3e95f9b128353d9f3c100 Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Mon, 24 Sep 2018 09:20:24 +0400 Subject: [PATCH] =?UTF-8?q?sqlmig:=20ajout=20de=20la=20restauration=20de?= =?UTF-8?q?=20la=20base=20test=20=C3=A0=20partir=20d'une=20copie=20de=20la?= =?UTF-8?q?=20prod?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sqlmig | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/sqlmig b/sqlmig index 246f5f6..3b084db 100755 --- a/sqlmig +++ b/sqlmig @@ -116,6 +116,15 @@ OPTIONS -c, --connect Se connecter avec le client natif (mysql ou sqlplus) sur la base de données courante. + -r, --restore-test + Restaurer une sauvegarde d'une base de production sur la test. Cette + option n'est (actuellement) supportée que pour MySQL. + L'argument attendu est un fichier de sauvegarde DATABASE.sql[.gz] + effectué avec la commande + mysqldump --databases --add-drop-database DATABASE + Dans le fichier spécifié, on remplace toutes les occurences de DATABASE + par DATABASE_test, ensuite on lance (re)création de la base de données + mysql $dbname$suffix" + dbname="$dbname$suffix" + fi + + dump="$1" + [ -n "$dump" ] || die "Vous devez spécifier le fichier de dump" + [ -f "$dump" ] || die "$dump: fichier de dump introuvable" + + ac_set_tmpdir tmpdir + if [[ "$dump" == *.gz ]]; then + gzip -dc "$dump" >"$tmpdir/prod.sql" + elif [[ "$dump" == *.sql ]]; then + cat "$dump" >"$tmpdir/prod.sql" + else + die "$dump: n'est pas un fichier sql" + fi + dump="$tmpdir/prod.sql" + + pname="$dbname" + tname="${dbname}_test" + sed <"$tmpdir/prod.sql" >"$tmpdir/test.sql" "\ +s/\`$pname\`/\`$tname\`/g +s/\`${pname}_updates_\`/\`${tname}_updates_\`/g" + + enote "Vous allez restaurer un fichier de sauvegarde de le base $pname vers la base $tname" + ask_yesno "Voulez-vous continuer?" X || die + + array_del mysqlargs -B # désactiver le mode batch + mysql "${userargs[@]}" "${mysqlargs[@]}" <"$tmpdir/test.sql" + ac_clean "$tmpdir" + + exit 0 + ################################################################################ elif [ "$action" != update ]; then die "BUG: $action: action non implémentée"