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
-L, --load-data
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
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
@ -85,12 +85,18 @@ OPTIONS
aucune ligne ne correspond à une clé donnée, la mise à jour pour cette
ligne est ignorée.
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='
function format_sqlvalue(value) {
if (value == "\\N") {
if (value == null_value) {
value = "NULL"
} else if (value ~ /^[0-9]+$/) {
} else if (value ~ /^[0-9][0-9]\/[0-9][0-9]\/[0-9][0-9]$/) {
@ -122,6 +128,7 @@ truncate=
fake=
method=load
update_key=
null_value='\N'
parse_opts "${PRETTYOPTS[@]}" \
--help '$exit_with display_help' \
-h:,-H:,--host: host= \
@ -137,6 +144,8 @@ parse_opts "${PRETTYOPTS[@]}" \
-L,--load-data method=load \
-I,--insert-data method=insert \
-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"
dbtable="$1"; shift
@ -228,7 +237,7 @@ elif [ "$method" == insert ]; then
ac_set_tmpfile inserts
[ -n "$truncate" ] && echo "$truncate" >>"$inserts"
awkcsv <"$input" >>"$inserts" -s "$skip_lines" -v table="$table" \
-a "$__AWK_MYSQLFUNCS"'{
-v null_value="$null_value" -a "$__AWK_MYSQLFUNCS"'{
count = length(ORIGHEADERS)
fields = ""
for (i = 1; i <= count; i++) {
@ -262,7 +271,7 @@ elif [ "$method" == update ]; then
[ -n "$truncate" ] && echo "$truncate" >>"$updates"
awkcsv <"$input" >>"$updates" -s "$skip_lines" \
-v table="$table" -v update_key="$update_key" \
-a "$__AWK_MYSQLFUNCS"'{
-v null_value="$null_value" -a "$__AWK_MYSQLFUNCS"'{
set_values = ""
cond = ""
count = length(ORIGHEADERS)