URL: https://linuxfr.org/forums/astucesdivers/posts/admin-traiter-des-fichiers-mdb-access Title: [Admin] Traiter des fichiers mdb (Access) Authors: Franck Routier Date: 2007年11月10日T16:31:08+01:00 Tags: postgresql Score: 1 Vous est-il arriver de devoir traiter des fichiers Access sous Linux (pour les importer sous Postgresql par exemple) ? Moi oui, et après avoir un peu galéré, voici ma solution, un petit script bash. Il nécessite le paquet mdb-tools. #!/bin/sh IFS=! for table in `mdb-tables -d ! 1ドル` do £spaces£ £/spaces£echo "Export de la table 1ドル" £spaces£ £/spaces£dbname=`echo "1ドル" | awk -F/ '{print $NF}'` £spaces£ £/spaces£mdb-export -d \| "1ドル" "$table" > "2ドル/$dbname.$table.csv" done J'explique un peu : * IFS=! pour fixer le séparateur de champs dans la boucle for (les noms de tables peuvent contenir des espaces, jamais des !) * mdb-tables -d ! lui dit justement d'utiliser le ! comme séparateur des noms de tables * mdb-export -d | lui dit d'utiliser le | comme séparateur dans le fichier csv. Là ça dépend un peu des données, mais le caractère ',' par défaut ne convient de toute façon pas car la virgule sert aussi de séparateur décimal * deux paramètres à passer à la ligne de commande : 1ドル le nom du fichier mdb à traiter, 2ドル le répertoire dans lequel je veux sauvegarder mes exports. On pourrait facilement rajouter sur le même principe un petit mdb-schema pour exporter les schémas de création des tables exportées. Et pour le lancer sur tout un répertoire : for fic in rep/*.mdb; do ./export-databse.sh $fic repcsv ; done Pour la bonne bouche, comme je n'ai pas réussi à lui imposer le caractère décimal et que la commande COPY de postgresql veut un point, je lance : sed -i s/,/./g repcsv/*.csv (inconvénient : si vous avec des virgules dans des champs de chaînes de caractères, elles sont aussi remplacées) Pas si mal, non ? Franck