bash, créer des requêtes sql depuis un csv
2020-04-21
Il y a quelques temps, j’avais utilisé la commande awk
pour générer des requêtes sql depuis un fichier CSV.
Dans le cas présent, j’utilise simplement un script bash.
Au final, la solution bash -bien que plus verbeuse- me semble plus lisible à lire et modifier.
#!/bin/bash
fichier=~/Téléchargements/groupmotifs.csv
tail -n +2 $fichier | tr -d $'\r' | while IFS=$'\n' read line || [[ $line ]]
do
IFS=';' read id name type_group nas <<< "$line"
cat <<EOF
insert into group_motifs (id, name, type_group, nas) values ($id, "$name", "$type_group", "$nas") on duplicate key update nas="$nas", type_group="$type_group", name="$name";
EOF
done > requetes.sql
fichier=~/Téléchargements/motifsroutage.csv
tail -n +2 $fichier | tr -d $'\r' | while IFS=$'\n' read line || [[ $line ]]
do
IFS=';' read id motif_routage libelle mot motif_sup id_group_motif nas <<< "$line"
if [[ -z "$mot" || "$mot" == "NULL" ]]; then mot="NULL"; else mot="\"$mot\""; fi
if [[ -z "$id_group_motif" || "$id_group_motif" == "NULL" ]]; then id_group_motif="NULL"; fi
cat <<EOF
replace into listeMotifsRoutage (id, motif_routage, libelle, mot, motif_sup, id_group_motif, nas) values ($id, "$motif_routage", "$libelle", $mot, "$motif_sup", $id_group_motif, "$nas");
EOF
done >> requetes.sql