sqlmig: support chemin config/sqlmig et bug avec csv_null

This commit is contained in:
Jephté Clain 2018-11-19 22:24:28 +04:00
parent 45da726704
commit 01325d0c23
1 changed files with 27 additions and 17 deletions

44
sqlmig
View File

@ -980,6 +980,8 @@ if [ -z "$dbdir" -a -z "$updatedir" ]; then
setx parentdir=dirname -- "$cwd"
if __check_devel_dir src/main/resources/database; then
enote "Autosélection src/main/resources/database/"
elif __check_devel_dir config/sqlmig; then
enote "Autosélection config/sqlmig/"
elif __check_devel_dir support/database; then
enote "Autosélection support/database/"
elif __check_devel_dir database; then
@ -1086,7 +1088,8 @@ grant resource to $dbname;"
echo >"$dbdir/ora.conf" "\
# Paramètres de connexion par défaut
ORACLE_SID=orcl
NLS_LANG=AMERICAN_AMERICA.AL32UTF8
NLS_LANG=FRENCH_FRANCE.AL32UTF8
#NLS_LANG=AMERICAN_AMERICA.AL32UTF8
# paramètres de connexion pour les mises à jour administratives
# si aucune valeur n'est spécifiée, la valeur effective est '/ as sysdba' mais
# cela requière que la mise à jour soit faite avec une connexion locale.
@ -1334,19 +1337,24 @@ for dbdir in "${dbdirs[@]}"; do
ensure_dbtype "$dbdir" "$type"
ensure_dbmode "$dbtype" "$mode"
# Conversion csv --> sql
array_lsfiles csvs "$dbdir" "*.csv"
if [ "$dbtype" == mysql -a -n "$data_csv" ]; then
etitled "Conversion"
for csv in "${csvs[@]}"; do
setx csvname=basename -- "$csv"
sql="${csv%.csv}.sql"
if [ "$data_csv" != force ]; then
testnewer "$csv" "$sql" || continue
fi
if [ -n "$data_csv" ]; then
# Conversion csv --> sql
array_lsfiles csvs "$dbdir" "*.csv"
if [ "$dbtype" == mysql ]; then
setx defaults=mysql_get_defaults "$dbdir"
set_csv_null=1
mysql__mconf_get "$defaults"
estep "$csvname --> ${csvname%.csv}.sql"
eval "$(awk '{
etitled "Conversion"
for csv in "${csvs[@]}"; do
setx csvname=basename -- "$csv"
sql="${csv%.csv}.sql"
if [ "$data_csv" != force ]; then
testnewer "$csv" "$sql" || continue
fi
estep "$csvname --> ${csvname%.csv}.sql"
script='{
truncate = ($0 ~ /-data_truncate(.devel)?.csv$/)? "1": ""
sub(/^.*\//, "")
sub(/^[A-Z0-9.]*[0-9]-?/, "")
@ -1356,10 +1364,12 @@ for dbdir in "${dbdirs[@]}"; do
print "truncate=" truncate
gsub(/'\''/, "'\'\\\\\'\''")
print "table='\''" $0 "'\''"
}' <<<"$csvname")" #"
"$scriptdir/mysqlloadcsv" >"$sql" ${truncate:+-T} -Z "$csv_null" -nIf "$csv" "$table" --prefix "-- -*- coding: utf-8 mode: sql -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8"
done
eend; eclearp
}'
eval "$(awk "$script" <<<"$csvname")"
"$scriptdir/mysqlloadcsv" >"$sql" ${truncate:+-T} -Z "$csv_null" -nIf "$csv" "$table" --prefix "-- -*- coding: utf-8 mode: sql -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8"
done
eend; eclearp
fi
fi
# lister les mises à jour disponibles