Retourner aux forums || Retourner au forum Programmation.shell
Programmation.shell : Fichiers mdb (access) et script bash
Posté par Franck Routier () le 17 mars 2006je cherche à automatiser le traitement de fichiers .mdb sous linux.
Je dispose des commandes de mdb-tools, à savoir :
- mdb-tables -1 fic.mdb : liste les tables d'une base .mdb, une table par ligne grâce à l'option -1
- mdb-export fic.mdb table : export dans un csv (à envoyer dans un fichier)
Je voudrais créer un script qui automatise l'export de toutes les tables de toutes les bases d'un répertoire, et je me heurte à mon manque de connaissances, de awk en particulier.
Donc je voudrais un truc du genre :
for fic in *.mdb
do
mdb-tables -1 $fic | awk '{mdb-export $fic $1 > $fic.$1.csv}'
done
Bon, ça ne marche pas, ma commande awk est bidon...
Quelqu'un peut m'aider, je suis sûr qu'un script peut faire ça !?
Merci
Franck
> Lire le message (5 commentaires, moyenne: 1,8).
comme ca ?
for fic in *.mdb
do
for j in $( mdb-tables -1 $fic | awk '{print $1}'
do
mdb-export $fic $j > $fic.$1.csv
done
done
-
[^]Re: comme ca ?
Posté par Franck Routier () le 17/03/2006 à 13:13. (lien). Évalué à 1.Super, merci beaucoup !
(juste une petite typo : mdb-export $fic $j > $fic.$j.csv)
Je continue de lire et d'apprendre sur awk et le shell, c'est vraiment trop puissant (extase du néophyte extasié :-)-
[^]Re: comme ca ?
Posté par Franck Routier () le 17/03/2006 à 14:05. (lien). Évalué à 1.Euh non, pas tout à fait finalement...
Ces $@*# ont mis des espaces dans leurs noms de tables !! (ben oui, c'est possible...)
Du coup le 'for j ' me découpe mes noms de tables...
Y a-t-il un moyen dans le for de lui donner un delimiteur autre que l'espace ?-
[^]Re: comme ca ?
Posté par totof2000 () le 17/03/2006 à 15:14. (lien). Évalué à 3.Oui, mais il faut que les autres champs soient séparés par un autre caractère que l'espace sinon ça ne marche pas. Avant le for tu initialise la variable IFS avec ton séparateur de champ. Si tu as une table par ligne ça donne un truc du genre:
IFS="
"
for ......
-
[^]Re: comme ca ?
Posté par Franck Routier () le 18/03/2006 à 07:44. (lien). Évalué à 1.Merci !
J'ai donc positionné IFS à ! (le ! est interdit dans le nom d'une table access), et j'ai passé à mdb-tables le paramètre -d ! (pour le séparateur), et là tout marche bien !
Merci encore...
Je me suis permis par ailleurs de proposer une astuce qui récapitule l'utilisation de mdb-tools avec bash pour traiter les fichiers .mdb.
Elle est en cours de modération...
Franck
-
-
-
Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.shell



Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.