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
|
||||
|
||||
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
|
||||
|
|
14
mysqlloadcsv
14
mysqlloadcsv
|
@ -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
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue