je 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
# comme ca ?
Posté par totof2000 . Évalué à 3.
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 (Mastodon) . Évalué à 1.
(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 (Mastodon) . Évalué à 1.
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 . Évalué à 3.
IFS="
"
for ......
[^] # Re: comme ca ?
Posté par Franck Routier (Mastodon) . Évalué à 1.
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
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.