changer l'ordre des arguments
This commit is contained in:
parent
39679c1323
commit
f0644feebd
31
mysqlcsv
31
mysqlcsv
|
@ -5,18 +5,21 @@ function display_help() {
|
||||||
uecho "$scriptname: Faire une requête MySQL et formater la sortie pour traitement avec awkcsv
|
uecho "$scriptname: Faire une requête MySQL et formater la sortie pour traitement avec awkcsv
|
||||||
|
|
||||||
USAGE
|
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)
|
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
|
requête(s) sql sont prises sur l'entrée standard, ou depuis un fichier
|
||||||
si l'option -f est spécifiée.
|
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
|
OPTIONS
|
||||||
-h host
|
-h HOST
|
||||||
-P port
|
-P PORT
|
||||||
-u user
|
-u USER
|
||||||
-ppassword
|
-pPASSWORD
|
||||||
|
-D DATABASE
|
||||||
Informations de connexion à la base de données
|
Informations de connexion à la base de données
|
||||||
-C CONFIG
|
-C CONFIG
|
||||||
Prendre les informations de connexion depuis le fichier spécifié.
|
Prendre les informations de connexion depuis le fichier spécifié.
|
||||||
|
@ -68,6 +71,7 @@ host=
|
||||||
port=
|
port=
|
||||||
user=
|
user=
|
||||||
password=--NOT-SET--
|
password=--NOT-SET--
|
||||||
|
database=
|
||||||
configs=()
|
configs=()
|
||||||
profile=
|
profile=
|
||||||
noheaders=
|
noheaders=
|
||||||
|
@ -81,6 +85,7 @@ parse_opts "${PRETTYOPTS[@]}" \
|
||||||
-P:,--port: port= \
|
-P:,--port: port= \
|
||||||
-u:,--user: user= \
|
-u:,--user: user= \
|
||||||
-p::,--passwd:,--password: password= \
|
-p::,--passwd:,--password: password= \
|
||||||
|
-D:,--database: database= \
|
||||||
-C:,--config: configs \
|
-C:,--config: configs \
|
||||||
--profile: profile= \
|
--profile: profile= \
|
||||||
-N,--no-headers,--skip-column-names noheaders=1 \
|
-N,--no-headers,--skip-column-names noheaders=1 \
|
||||||
|
@ -90,9 +95,10 @@ parse_opts "${PRETTYOPTS[@]}" \
|
||||||
-f:,--input: input= \
|
-f:,--input: input= \
|
||||||
@ args -- "$@" && set -- "${args[@]}" || die "$args"
|
@ args -- "$@" && set -- "${args[@]}" || die "$args"
|
||||||
|
|
||||||
database="$1"; shift
|
if [ "$1" != "--" ]; then
|
||||||
query="$1"; shift
|
# le premier argument est la requête
|
||||||
[ "$1" == "--" ] && shift
|
query="$1"; shift
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -n "${configs[*]}" ]; then
|
if [ -n "${configs[*]}" ]; then
|
||||||
PROFILE="$profile"
|
PROFILE="$profile"
|
||||||
|
@ -103,6 +109,13 @@ if [ -n "${configs[*]}" ]; then
|
||||||
done
|
done
|
||||||
fi
|
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[@]}" "$@"'
|
mysqlcmd='mysql "${mysqlargs[@]}" "$@"'
|
||||||
mysqlargs=(
|
mysqlargs=(
|
||||||
-B --default-character-set=utf8
|
-B --default-character-set=utf8
|
||||||
|
|
14
mysqlloadcsv
14
mysqlloadcsv
|
@ -58,7 +58,9 @@ OPTIONS
|
||||||
Fichier en entrée. Ne pas spécifier cette option ou utiliser '-' pour
|
Fichier en entrée. Ne pas spécifier cette option ou utiliser '-' pour
|
||||||
lire depuis l'entrée standard.
|
lire depuis l'entrée standard.
|
||||||
-s NBLINES
|
-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" &&
|
source "$(dirname "$0")/ulib/ulib" &&
|
||||||
|
@ -73,6 +75,7 @@ configs=()
|
||||||
profile=
|
profile=
|
||||||
input=
|
input=
|
||||||
skip_lines=
|
skip_lines=
|
||||||
|
truncate=
|
||||||
parse_opts "${PRETTYOPTS[@]}" \
|
parse_opts "${PRETTYOPTS[@]}" \
|
||||||
--help '$exit_with display_help' \
|
--help '$exit_with display_help' \
|
||||||
-h:,-H:,--host: host= \
|
-h:,-H:,--host: host= \
|
||||||
|
@ -82,6 +85,7 @@ parse_opts "${PRETTYOPTS[@]}" \
|
||||||
-C:,--config: configs \
|
-C:,--config: configs \
|
||||||
-f:,--input: input= \
|
-f:,--input: input= \
|
||||||
-s:,--skip-lines: skip_lines= \
|
-s:,--skip-lines: skip_lines= \
|
||||||
|
-T,--truncate truncate=1 \
|
||||||
@ args -- "$@" && set -- "${args[@]}" || die "$args"
|
@ args -- "$@" && set -- "${args[@]}" || die "$args"
|
||||||
|
|
||||||
dbtable="$1"; shift
|
dbtable="$1"; shift
|
||||||
|
@ -132,14 +136,16 @@ else
|
||||||
skip_lines=$(($skip_lines + 1))
|
skip_lines=$(($skip_lines + 1))
|
||||||
fi
|
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=(
|
mysqlargs=(
|
||||||
${host:+-h "$host"} ${port:+-P "$port"}
|
${host:+-h "$host"} ${port:+-P "$port"}
|
||||||
${user:+-u "$user"}
|
${user:+-u "$user"} ${database:+-D "$database"}
|
||||||
)
|
)
|
||||||
[ "$password" != "--NOT-SET--" ] && mysqlargs=("${mysqlargs[@]}" -p"$password")
|
[ "$password" != "--NOT-SET--" ] && mysqlargs=("${mysqlargs[@]}" -p"$password")
|
||||||
mysqlargs=("${mysqlargs[@]}"
|
mysqlargs=("${mysqlargs[@]}"
|
||||||
"$database"
|
"$truncate$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);"
|
|
||||||
--
|
--
|
||||||
--local-infile=1
|
--local-infile=1
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue