[Awk] : convertir un csv en sql

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.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s