[Awk] : convertir un csv en sql

Print Friendly, PDF & Email

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.
Découvrez  Comment créer des namespaces et des déployments kubernetes avec un fichier texte ??