changer l'ordre des arguments

This commit is contained in:
Jephté Clain 2014-01-22 15:42:11 +04:00
parent 39679c1323
commit f0644feebd
2 changed files with 32 additions and 13 deletions

View File

@ -5,18 +5,21 @@ function display_help() {
uecho "$scriptname: Faire une requête MySQL et formater la sortie pour traitement avec awkcsv
USAGE
$scriptname [db [query]] [-- mysql options]
$scriptname [query [db]] [-- mysql options]
db est le nom de la base de données
query est la requête sql à exécuter. Si query n'est pas spécifiée, la(les)
requête(s) sql sont prises sur l'entrée standard, ou depuis un fichier
si l'option -f est spécifiée.
db est le nom de la base de données. Cette argument n'est lu que si le nom
de la base de donnée n'est ni spécifié dans le fichier de configuration,
ni spécifié avec l'option -D
OPTIONS
-h host
-P port
-u user
-ppassword
-h HOST
-P PORT
-u USER
-pPASSWORD
-D DATABASE
Informations de connexion à la base de données
-C CONFIG
Prendre les informations de connexion depuis le fichier spécifié.
@ -68,6 +71,7 @@ host=
port=
user=
password=--NOT-SET--
database=
configs=()
profile=
noheaders=
@ -81,6 +85,7 @@ parse_opts "${PRETTYOPTS[@]}" \
-P:,--port: port= \
-u:,--user: user= \
-p::,--passwd:,--password: password= \
-D:,--database: database= \
-C:,--config: configs \
--profile: profile= \
-N,--no-headers,--skip-column-names noheaders=1 \
@ -90,9 +95,10 @@ parse_opts "${PRETTYOPTS[@]}" \
-f:,--input: input= \
@ args -- "$@" && set -- "${args[@]}" || die "$args"
database="$1"; shift
query="$1"; shift
[ "$1" == "--" ] && shift
if [ "$1" != "--" ]; then
# le premier argument est la requête
query="$1"; shift
fi
if [ -n "${configs[*]}" ]; then
PROFILE="$profile"
@ -103,6 +109,13 @@ if [ -n "${configs[*]}" ]; then
done
fi
if [ -z "$database" -a "$1" != "--" ]; then
# le deuxième argument est éventuellement le nom de la base de données, si
# cela n'a pas été spécifié dans le fichier de configuration
database="$1"; shift
fi
[ "$1" == "--" ] && shift
mysqlcmd='mysql "${mysqlargs[@]}" "$@"'
mysqlargs=(
-B --default-character-set=utf8

View File

@ -58,7 +58,9 @@ OPTIONS
Fichier en entrée. Ne pas spécifier cette option ou utiliser '-' pour
lire depuis l'entrée standard.
-s NBLINES
Nombre de lignes à sauter dans le fichier en entrée"
Nombre de lignes à sauter dans le fichier en entrée
-T, --truncate
Vider la table avant d'effectuer le chargement"
}
source "$(dirname "$0")/ulib/ulib" &&
@ -73,6 +75,7 @@ configs=()
profile=
input=
skip_lines=
truncate=
parse_opts "${PRETTYOPTS[@]}" \
--help '$exit_with display_help' \
-h:,-H:,--host: host= \
@ -82,6 +85,7 @@ parse_opts "${PRETTYOPTS[@]}" \
-C:,--config: configs \
-f:,--input: input= \
-s:,--skip-lines: skip_lines= \
-T,--truncate truncate=1 \
@ args -- "$@" && set -- "${args[@]}" || die "$args"
dbtable="$1"; shift
@ -132,14 +136,16 @@ else
skip_lines=$(($skip_lines + 1))
fi
[ -n "$truncate" ] && truncate="truncate table \`$table\`;"
loadcsv="load data local infile '$input' into table \`$table\` character set 'utf8' fields terminated by ',' optionally enclosed by '\\\"' escaped by '\\\\' lines terminated by '\\n' starting by '' ignore $skip_lines lines ($cfields);"
mysqlargs=(
${host:+-h "$host"} ${port:+-P "$port"}
${user:+-u "$user"}
${user:+-u "$user"} ${database:+-D "$database"}
)
[ "$password" != "--NOT-SET--" ] && mysqlargs=("${mysqlargs[@]}" -p"$password")
mysqlargs=("${mysqlargs[@]}"
"$database"
"load data local infile '$input' into table \`$table\` character set 'utf8' fields terminated by ',' optionally enclosed by '\\\"' escaped by '\\\\' lines terminated by '\\n' starting by '' ignore $skip_lines lines ($cfields);"
"$truncate$loadcsv"
--
--local-infile=1
)