Encore une petite commande pour débuter et bien pratique. Nhésitez pas en commentaire à partager votre expérience sur ce genre de conversion.
Awk va nous permettre de facilement convertir un csv en sql. D’ailleurs je suis en train de me dire qu’il faudrait que je passe un peu de temps dessus pour faire en sorte qu’il s’adapte automatiquement à toutes les longueurs de csv voir à récupérer l’entête pour les noms de champs ça serait plus malin.
En tout cas pour l’instant voici comment j’utilise régulièrement awk pour convertir mes fichiers csv (ou autre parfois) en sql.
# contenu du csv cat attention.csv 1;xav;dd;25d;28 2;paul;aa;25f;100 # ligne de commande cat attention.csv | awk -F ";" '{print "INSERT INTO matable (champs1, champs2, champs3, champs4, champs5) values ('\''"$1"'\'', '\''"$2"'\'', '\''"$3"'\'', '\''"$4"'\'', '\''"$5"'\'');"}' # le résultat INSERT INTO matable (champs1, champs2, champs3, champs4, champs5) values ('1', 'xav', 'dd', '25d', '28'); INSERT INTO matable (champs1, champs2, champs3, champs4, champs5) values ('2', 'paul', 'aa', '25f', '100'); INSERT INTO matable (champs1, champs2, champs3, champs4, champs5) values ('3', 'thierry', 'bb', '14g', '75');
Donc :
- tout simplement on défini le séparateur avec -F
- on print en insérant les variable des champs
- la seule suptilité c’est d’échapper les quotes.