sqlmig: ajout de l'option --connect
This commit is contained in:
parent
bad6c4811a
commit
a88c24e747
97
sqlmig
97
sqlmig
|
@ -103,6 +103,9 @@ OPTIONS
|
||||||
-e, --export DESTUPDATEDIR
|
-e, --export DESTUPDATEDIR
|
||||||
Exporter les définitions de bases de données et mises à jour du
|
Exporter les définitions de bases de données et mises à jour du
|
||||||
répertoire courant vers le répertoire DESTUPDATEDIR
|
répertoire courant vers le répertoire DESTUPDATEDIR
|
||||||
|
-c, --connect
|
||||||
|
Se connecter avec le client natif (mysql ou sqlplus) sur la base de
|
||||||
|
données courante.
|
||||||
--update-all
|
--update-all
|
||||||
Mettre à jour la base de données. C'est l'option par défaut
|
Mettre à jour la base de données. C'est l'option par défaut
|
||||||
-t, --updatedir UPDATEDIR
|
-t, --updatedir UPDATEDIR
|
||||||
|
@ -278,6 +281,29 @@ function ensure_dbmode() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function set_dbdirs() {
|
||||||
|
if [ -n "$dbdir" ]; then
|
||||||
|
dbdirs=("$dbdir")
|
||||||
|
elif [ -z "$updatedir" ]; then
|
||||||
|
array_lsfiles files . "*.sql"
|
||||||
|
if [ ${#files[*]} -gt 0 ]; then
|
||||||
|
enote "Autosélection répertoire courant"
|
||||||
|
dbdir="$cwd"
|
||||||
|
dbdirs=("$dbdir")
|
||||||
|
else
|
||||||
|
die "Vous devez spécifier l'option -b"
|
||||||
|
fi
|
||||||
|
elif [ -n "$dbname" ]; then
|
||||||
|
dbdirs=("$updatedir/$dbname")
|
||||||
|
else
|
||||||
|
array_lsdirs dbdirs "$updatedir"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$dbname" -a ${#dbdirs[*]} -gt 1 ]; then
|
||||||
|
die "Avec l'option -n, une seule base de données doit être spécifiée"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# MySQL
|
# MySQL
|
||||||
|
|
||||||
|
@ -892,6 +918,7 @@ args=(
|
||||||
--oracle type=oracle
|
--oracle type=oracle
|
||||||
-0,--init action=init
|
-0,--init action=init
|
||||||
-e:,--export: '$action=export; set@ exportdir'
|
-e:,--export: '$action=export; set@ exportdir'
|
||||||
|
-c,--connect action=connect
|
||||||
--update-all action=update
|
--update-all action=update
|
||||||
-t:,--updatedir: updatedir=
|
-t:,--updatedir: updatedir=
|
||||||
-d:,--databasedir: dbdir=
|
-d:,--databasedir: dbdir=
|
||||||
|
@ -1074,6 +1101,54 @@ elif [ "$action" == export ]; then
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
elif [ "$action" == connect ]; then
|
||||||
|
set_dbdirs
|
||||||
|
|
||||||
|
force_dbname="$dbname"
|
||||||
|
force_suffix="$suffix"
|
||||||
|
for dbdir in "${dbdirs[@]}"; do
|
||||||
|
dbname="$force_dbname"
|
||||||
|
[ -n "$dbname" ] || setx dbname=basename "$dbdir"
|
||||||
|
suffix="$force_suffix"
|
||||||
|
etitle "$dbname"
|
||||||
|
|
||||||
|
ensure_dbtype "$dbdir" "$type"
|
||||||
|
ensure_dbmode "$dbtype" "$mode"
|
||||||
|
|
||||||
|
if [ "$dbtype" == mysql ]; then
|
||||||
|
# construire les paramètres pour mysql
|
||||||
|
mysql_set_userargs "$dbdir" "$dbname"
|
||||||
|
mysql_set_mysqlargs
|
||||||
|
|
||||||
|
if [ -n "$suffix" ]; then
|
||||||
|
estepi "Suffixe: $dbname --> $dbname$suffix"
|
||||||
|
dbname="$dbname$suffix"
|
||||||
|
fi
|
||||||
|
|
||||||
|
array_del mysqlargs -B # désactiver le mode batch
|
||||||
|
mysql "${userargs[@]}" "${mysqlargs[@]}" -D "$dbname"
|
||||||
|
|
||||||
|
elif [ "$dbtype" == oracle ]; then
|
||||||
|
# lire les paramètres
|
||||||
|
oracle_source_userconf "$dbdir" "$dbname"
|
||||||
|
oracle_ensure_opdir
|
||||||
|
|
||||||
|
if [ -n "$suffix" ]; then
|
||||||
|
estepi "Suffixe: $dbname --> $dbname$suffix"
|
||||||
|
dbname="$dbname$suffix"
|
||||||
|
fi
|
||||||
|
|
||||||
|
sqlplus "$USERCONNECT@$ORACLE_SID" ${USERDBA:+as sysdba} "$@"
|
||||||
|
|
||||||
|
else
|
||||||
|
die "BUG: $dbtype: type non implémenté"
|
||||||
|
fi
|
||||||
|
|
||||||
|
eend
|
||||||
|
done
|
||||||
|
exit 0
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
elif [ "$action" != update ]; then
|
elif [ "$action" != update ]; then
|
||||||
die "BUG: $action: action non implémentée"
|
die "BUG: $action: action non implémentée"
|
||||||
|
@ -1082,27 +1157,7 @@ fi
|
||||||
################################################################################
|
################################################################################
|
||||||
# update
|
# update
|
||||||
|
|
||||||
if [ -n "$dbdir" ]; then
|
set_dbdirs
|
||||||
dbdirs=("$dbdir")
|
|
||||||
elif [ -z "$updatedir" ]; then
|
|
||||||
array_lsfiles files . "*.sql"
|
|
||||||
if [ ${#files[*]} -gt 0 ]; then
|
|
||||||
enote "Autosélection répertoire courant"
|
|
||||||
dbdir="$cwd"
|
|
||||||
dbdirs=("$dbdir")
|
|
||||||
else
|
|
||||||
die "Vous devez spécifier l'option -b"
|
|
||||||
fi
|
|
||||||
elif [ -n "$dbname" ]; then
|
|
||||||
dbdirs=("$updatedir/$dbname")
|
|
||||||
else
|
|
||||||
array_lsdirs dbdirs "$updatedir"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$dbname" -a ${#dbdirs[*]} -gt 1 ]; then
|
|
||||||
die "Avec l'option -n, une seule base de données doit être spécifiée"
|
|
||||||
fi
|
|
||||||
|
|
||||||
[ -n "$updatefile" ] && setx updatefile=abspath "$updatefile"
|
[ -n "$updatefile" ] && setx updatefile=abspath "$updatefile"
|
||||||
|
|
||||||
# répertoire temporaire pour Oracle
|
# répertoire temporaire pour Oracle
|
||||||
|
|
Loading…
Reference in New Issue