ajout de l'option -n

préparer l'implémentation de l'option -k
This commit is contained in:
Jephté Clain 2014-02-27 14:35:14 +04:00
parent fdd8b382fb
commit 54b40ed68a
1 changed files with 34 additions and 8 deletions

View File

@ -15,13 +15,13 @@ fields est la liste des colonnes. Si cette valeur est spécifiée, il faudra
calculées à partir du fichier en entrée.
Dans les données en entrées, qui doivent être en UTF8, les conversions suivantes
sont effectuées:
sont effectuées par MySQL:
\\0 --> NUL
\\b --> backspace
\\n --> newline
\\r --> carriage return
\\t --> tab
\\0 --> <caractère NUL>
\\b --> <backspace>
\\n --> <newline>
\\r --> <carriage return>
\\t --> <tab>
\\Z --> Ctrl+Z
\\N --> NULL
@ -60,7 +60,14 @@ OPTIONS
-s NBLINES
Nombre de lignes à sauter dans le fichier en entrée
-T, --truncate
Vider la table avant d'effectuer le chargement"
Vider la table avant d'effectuer le chargement
-k, --update-key KEY
Au lieu de charger de nouvelles données, essayer de mettre à jour la
table avec les données du fichier CSV. KEY est le nom de la colonne qui
est utilisée comme clé. Toutes les autres colonnes sont les nouvelles
données à mettre à jour.
-n, --fake
Ne pas effectuer l'opération. Afficher simplement la commande SQL."
}
source "$(dirname "$0")/ulib/ulib" &&
@ -76,6 +83,8 @@ profile=
input=
skip_lines=
truncate=
update_key=
fake=
parse_opts "${PRETTYOPTS[@]}" \
--help '$exit_with display_help' \
-h:,-H:,--host: host= \
@ -86,8 +95,16 @@ parse_opts "${PRETTYOPTS[@]}" \
-f:,--input: input= \
-s:,--skip-lines: skip_lines= \
-T,--truncate truncate=1 \
-k:,--update-key: update_key= \
-n,--fake fake=1 \
@ args -- "$@" && set -- "${args[@]}" || die "$args"
if [ -n "$update_key" ]; then
# update_key n'est pas encore implémenté
ewarn "L'option -k n'est pas encore implémentée. Activation de --fake pour éviter de perdre des données"
fake=1
fi
dbtable="$1"; shift
fields=()
while [ "$#" -gt 0 -a "$1" != "--" ]; do
@ -154,4 +171,13 @@ mysqlargs=("${mysqlargs[@]}"
--local-infile=1
)
exec "$scriptdir/mysqlcsv" "${mysqlargs[@]}" "$@"
cmd=("$scriptdir/mysqlcsv" "${mysqlargs[@]}" "$@")
if [ -n "$fake" ]; then
echo "-- Requêtes SQL:"
[ -n "$truncate" ] && echo "$truncate"
echo "$loadcsv"
echo "-- Commande à lancer en ligne de commande pour importer la table dans MySQL:"
echo "-- $(quoted_args "${cmd[@]}")"
else
exec "${cmd[@]}"
fi