possibilité de spécifier la valeur qui doit être utilisée pour NULL

This commit is contained in:
Jephté Clain 2015-03-08 15:48:54 +04:00
parent fbb9c693ff
commit 52388896bf
1 changed files with 14 additions and 5 deletions

View File

@ -71,7 +71,7 @@ OPTIONS
Vider la table avant d'effectuer le chargement Vider la table avant d'effectuer le chargement
-L, --load-data -L, --load-data
Charger les données avec la commande 'load data local'. C'est l'option Charger les données avec la commande 'load data local'. C'est l'option
par défaut. par défaut. Le fichier est transmis tel quel à MySQL.
-I, --insert-data -I, --insert-data
Charger les données en générant des commandes 'insert into'. L'effet est Charger les données en générant des commandes 'insert into'. L'effet est
en principe le même avec l'option -L (sauf que certains formats de date en principe le même avec l'option -L (sauf que certains formats de date
@ -85,12 +85,18 @@ OPTIONS
aucune ligne ne correspond à une clé donnée, la mise à jour pour cette aucune ligne ne correspond à une clé donnée, la mise à jour pour cette
ligne est ignorée. ligne est ignorée.
Note: utiliser les options -T et -U ensemble n'a pas de sens, mais -T Note: utiliser les options -T et -U ensemble n'a pas de sens, mais -T
est quand même honoré." est quand même honoré.
-Z, --null-value VALUE
Avec les options -I et -U, considérer que NULL est représenté par la
chaine spécifiée. Par défaut, utiliser \N
-z, --null-is-empty
Avec les options -I et -U, considérer que NULL est représenté par la
chaine vide. Cette option est équivalente à -Z ''"
} }
__AWK_MYSQLFUNCS=' __AWK_MYSQLFUNCS='
function format_sqlvalue(value) { function format_sqlvalue(value) {
if (value == "\\N") { if (value == null_value) {
value = "NULL" value = "NULL"
} else if (value ~ /^[0-9]+$/) { } else if (value ~ /^[0-9]+$/) {
} else if (value ~ /^[0-9][0-9]\/[0-9][0-9]\/[0-9][0-9]$/) { } else if (value ~ /^[0-9][0-9]\/[0-9][0-9]\/[0-9][0-9]$/) {
@ -122,6 +128,7 @@ truncate=
fake= fake=
method=load method=load
update_key= update_key=
null_value='\N'
parse_opts "${PRETTYOPTS[@]}" \ parse_opts "${PRETTYOPTS[@]}" \
--help '$exit_with display_help' \ --help '$exit_with display_help' \
-h:,-H:,--host: host= \ -h:,-H:,--host: host= \
@ -137,6 +144,8 @@ parse_opts "${PRETTYOPTS[@]}" \
-L,--load-data method=load \ -L,--load-data method=load \
-I,--insert-data method=insert \ -I,--insert-data method=insert \
-U:,-k:,--update-data: '$method=update; set@ update_key' \ -U:,-k:,--update-data: '$method=update; set@ update_key' \
-Z:,--null-value: null_value= \
-z,--null-is-empty null_value= \
@ args -- "$@" && set -- "${args[@]}" || die "$args" @ args -- "$@" && set -- "${args[@]}" || die "$args"
dbtable="$1"; shift dbtable="$1"; shift
@ -228,7 +237,7 @@ elif [ "$method" == insert ]; then
ac_set_tmpfile inserts ac_set_tmpfile inserts
[ -n "$truncate" ] && echo "$truncate" >>"$inserts" [ -n "$truncate" ] && echo "$truncate" >>"$inserts"
awkcsv <"$input" >>"$inserts" -s "$skip_lines" -v table="$table" \ awkcsv <"$input" >>"$inserts" -s "$skip_lines" -v table="$table" \
-a "$__AWK_MYSQLFUNCS"'{ -v null_value="$null_value" -a "$__AWK_MYSQLFUNCS"'{
count = length(ORIGHEADERS) count = length(ORIGHEADERS)
fields = "" fields = ""
for (i = 1; i <= count; i++) { for (i = 1; i <= count; i++) {
@ -262,7 +271,7 @@ elif [ "$method" == update ]; then
[ -n "$truncate" ] && echo "$truncate" >>"$updates" [ -n "$truncate" ] && echo "$truncate" >>"$updates"
awkcsv <"$input" >>"$updates" -s "$skip_lines" \ awkcsv <"$input" >>"$updates" -s "$skip_lines" \
-v table="$table" -v update_key="$update_key" \ -v table="$table" -v update_key="$update_key" \
-a "$__AWK_MYSQLFUNCS"'{ -v null_value="$null_value" -a "$__AWK_MYSQLFUNCS"'{
set_values = "" set_values = ""
cond = "" cond = ""
count = length(ORIGHEADERS) count = length(ORIGHEADERS)