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. calculées à partir du fichier en entrée.
Dans les données en entrées, qui doivent être en UTF8, les conversions suivantes 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 \\0 --> <caractère NUL>
\\b --> backspace \\b --> <backspace>
\\n --> newline \\n --> <newline>
\\r --> carriage return \\r --> <carriage return>
\\t --> tab \\t --> <tab>
\\Z --> Ctrl+Z \\Z --> Ctrl+Z
\\N --> NULL \\N --> NULL
@ -60,7 +60,14 @@ OPTIONS
-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 -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" && source "$(dirname "$0")/ulib/ulib" &&
@ -76,6 +83,8 @@ profile=
input= input=
skip_lines= skip_lines=
truncate= truncate=
update_key=
fake=
parse_opts "${PRETTYOPTS[@]}" \ parse_opts "${PRETTYOPTS[@]}" \
--help '$exit_with display_help' \ --help '$exit_with display_help' \
-h:,-H:,--host: host= \ -h:,-H:,--host: host= \
@ -86,8 +95,16 @@ parse_opts "${PRETTYOPTS[@]}" \
-f:,--input: input= \ -f:,--input: input= \
-s:,--skip-lines: skip_lines= \ -s:,--skip-lines: skip_lines= \
-T,--truncate truncate=1 \ -T,--truncate truncate=1 \
-k:,--update-key: update_key= \
-n,--fake fake=1 \
@ args -- "$@" && set -- "${args[@]}" || die "$args" @ 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 dbtable="$1"; shift
fields=() fields=()
while [ "$#" -gt 0 -a "$1" != "--" ]; do while [ "$#" -gt 0 -a "$1" != "--" ]; do
@ -154,4 +171,13 @@ mysqlargs=("${mysqlargs[@]}"
--local-infile=1 --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