From 54b40ed68a1718a8c4759093f477db380b61aa3d Mon Sep 17 00:00:00 2001 From: Jephte CLAIN Date: Thu, 27 Feb 2014 14:35:14 +0400 Subject: [PATCH] =?UTF-8?q?ajout=20de=20l'option=20-n=20pr=C3=A9parer=20l'?= =?UTF-8?q?impl=C3=A9mentation=20de=20l'option=20-k?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mysqlloadcsv | 42 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/mysqlloadcsv b/mysqlloadcsv index 45c9773..789842e 100755 --- a/mysqlloadcsv +++ b/mysqlloadcsv @@ -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 --> + \\b --> + \\n --> + \\r --> + \\t --> \\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