IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

PERL et fichiers DBF


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2012
    Messages : 35
    Par défaut PERL et fichiers DBF
    Bonjour à tous,

    Toujours aussi peu expérimenté en PERL , je reviens vous demander de l'aide pour traiter des fichiers DBF.

    J'ai un certain nombre de fichiers DBF avec des noms et surtout des structures diverses. Ils ont cependant des points communs sur lesquels je veux m'appuyer :
    - leur nom est correct
    - ils ne comportent qu'un seul enregistrement (mais avec un nombre de champs variables dont les valeurs nous intéressent pas)

    Pour obtenir des fichiers uniformes, je cherche à :
    - conserver mon nom de fichier DBF
    - n'avoir plus qu'un seul champ (qu'on pourrait appeler "CODE") dans lequel on injecterait le nom du fichier sans l'extension (dans l'unique enregistrement).

    L'idée serait de d'exécuter un programme PERL à appliquer sur un dossier contenant mes fichiers DBF.

    En PJ un zip avec dans le dossier "entrée" le DBF d'entrée et dans le dossier "sortie" le DBF de sortie souhaité.

    Merci d'avance pour votre aide !

    Max
    Fichiers attachés Fichiers attachés
    • Type de fichier : zip DBF.zip (686 octets, 55 affichages)

  2. #2
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Billets dans le blog
    1
    Par défaut
    Hum, pas bien compris. C'est quoi un fichier DBF?

    Tes fichiers joints sont apparemment binaires, je ne peux rien faire avec.

    Ne peux-tu pas les afficher normalement dans le post?

  3. #3
    Membre Expert Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 452
    Par défaut
    Bonjour,
    Citation Envoyé par Lolo78
    Hum, pas bien compris. C'est quoi un fichier DBF?
    Un .dbf est un fichier base de données. C'est le fichier que l'on trouve tel quel sur le disque, sa structure est spécifique au SGBD utilsé dBASE, Oracle...

    @max76
    Il semble que les modules CAM::DBF, XBase... permettent d'y accéder. Perso je ne les ai jamais utilisés. Ils ne permettent pas d'écrire selon une structure DBF.

    Pour travailler une structure DBF il est plus logique d'utiliser le module DBI, qui permet d'utiliser SQL et donc de tout faire dans la base : Créer un nouveau fichier .dbf, y créer une nouvelle table dans laquelle tu pourras structurer le nouvel enregistrement comme tu le désires.
    Un bon point de départ le tuto avec des exemples MySQL et Oracle.
    Note bien qu'on ne travaille pas directement sur le fichier .dbf, mais sur la base !
    Autrement dit, si tu n'as pas la base en ligne ce n'est pas la bonne solution...

    [EDIT 05:47] Dis-nous pourquoi tu désires accéder directement au fichier .dbf, ça nous aidera à comprendre ta problématique...

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2012
    Messages : 35
    Par défaut
    Bonjour,

    Les fichiers DBF ont aussi un autre usage : ils sont présent dans un des formats de données SIG (système d'information géographique) les plus utilisés, les shapefiles (créés par ESRI). Il s'agit d'un triplet de fichiers SHP (qui contient les "dessins") + DBF (qui contient les attributs txt et numériques relatifs à chaque dessin : exemple nom du projet, superficie, numéro du projet, responsable du projet...) + SHX (qui fait le lien entre le SHP et le DBF).
    Ce que je trouve pratique dans cette conception c'est que l'on peut "triturer" le fichier DBF séparément du reste des données.
    Les shapefiles sont capables de comporter un grand nombre d'objets géographiques avec beaucoup de champs associés, mais dans mon cas ils sont petits (mes SHP ne comportent qu'un dessin chacun) mais nombreux.
    Ma problématique : dans un premier temps je suis en train de structurer mes objets géographiques (en gros je m'occupe seulement de la qualité de mes SHP) les DBF associés, qui comportent des données très hétérogènes tant dans leurs valeurs que dans leur nom et nombre de champs (cela dépend de l'origine des fichiers et elles sont très diverses !), sont laissés tels quels.
    Je voudrais simplement, une fois que je suis satisfait de mes SHP, générer pour chacun d'eux un nouveau DBF avec un seul attribut : le nom du projet (qui est le nom du fichier sans l'extension) et écraser les anciens DBF. J'imaginais que l'on pouvait faire ça facilement en PERL, mais a priori, je me trompe...
    Ensuite une fois que mes projets (mes triplets SHP,SHX,DBF) sont tous bien structurés de la même manière, je pourrai enfin les fusionner avec une appli SIG :-)

    Merci de m'avoir lu jusqu'au bout !

  5. #5
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par dmganges Voir le message
    Un .dbf est un fichier base de données.
    A vrai dire, je me doutais bien que c'était quelque chose comme ça dont voulais parler max76, mais...
    Citation Envoyé par dmganges Voir le message
    C'est le fichier que l'on trouve tel quel sur le disque, sa structure est spécifique au SGBD utilsé dBASE, Oracle...
    ... mais c'est bien ça le problème: si c'est bien ce dont parle max76, ce n'est pas un format spécifique, et on ne peut alors rien dire de général sur la façon d'y accéder. Et, d'ailleurs, il est peu probable qu'il soit souhaitable de hacker ce genre de fichier, même en simple lecture et encore moins en écriture. Sauf à la rigueur dans les cas éventuels où la structure détaillée est publique, documentée et garantie. Publique et documentée, ce doit pouvoir être à peu près le cas au moins dans les projets de SGDB open source, mais garantie (c'est-à-dire pérenne, non susceptible d'évoluer au gré des versions du SGDB), c'est bien moins sûr, sauf peut-être si ce format est lui-même devenu une norme.

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2012
    Messages : 35
    Par défaut
    La structure du DBF est standard (et pourrait être une version éprouvée comme du DBASE III).
    Je ne m'y connais pas beaucoup (du coup je vais peut-être dire des bêtises) mais un moyen de modifier le DBF ne pourrait peut-être de le travailler en hexadécimal ?

  7. #7
    Membre Expert Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 452
    Par défaut
    Citation Envoyé par max76
    Les fichiers DBF ont aussi un autre usage : ils sont présent dans un des formats de données SIG (système d'information géographique) les plus utilisés, les shapefiles (créés par ESRI).
    ...
    MERCI pour tous ces détails !

    Je ne connais rien aux SIG, je ne te serai pas d'un grand secours :(

    Citation Envoyé par Lolo78
    ... mais c'est bien ça le problème: si c'est bien ce dont parle max76, ce n'est pas un format spécifique, et on ne peut alors rien dire de général sur la façon d'y accéder. Et, d'ailleurs, il est peu probable qu'il soit souhaitable de hacker ce genre de fichier, même en simple lecture et encore moins en écriture. Sauf à la rigueur dans les cas éventuels où la structure détaillée est publique, documentée et garantie. Publique et documentée, ce doit pouvoir être à peu près le cas au moins dans les projets de SGDB open source, mais garantie (c'est-à-dire pérenne, non susceptible d'évoluer au gré des versions du SGDB), c'est bien moins sûr, sauf peut-être si ce format est lui-même devenu une norme.
    Oui, je ne me risquerai pas à les modifier en dehors de l'outil qui les gèrent...

    @max76
    A tout hasard, et en tenant compte de la remarque de Lolo78, as-tu essayé de les ouvrir avec CAM::DBF, XBase... lire qq enreg pour voir ???

  8. #8
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par max76 Voir le message
    La structure du DBF est standard (et pourrait être une version éprouvée comme du DBASE III).
    Je ne m'y connais pas beaucoup (du coup je vais peut-être dire des bêtises) mais un moyen de modifier le DBF ne pourrait peut-être de le travailler en hexadécimal ?
    Hum, hexadécimal, ce n'est qu'une représentation pratique, mais rien n'empêche d'ouvrir un fichier binaire en Perl, encore faut-il savoir exactement que que l'on va y trouver, où, sous quel format, etc.

    EDIT: pendant que j'écrivais, Philou a posté une solution qui paraît très intéressante.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Importer un fichier dbf
    Par podz dans le forum Access
    Réponses: 13
    Dernier message: 19/12/2006, 19h29
  2. [Jdbc] Lecture fichier DBF via JDBC
    Par djidji dans le forum JDBC
    Réponses: 4
    Dernier message: 06/09/2005, 14h14
  3. remplacer fichier DBF
    Par jeff06_2 dans le forum Bases de données
    Réponses: 3
    Dernier message: 14/01/2005, 09h05
  4. [Oracle/Admin] chg de repertoire fichiers dbf (suite)
    Par shaun_the_sheep dans le forum Administration
    Réponses: 20
    Dernier message: 03/11/2004, 15h03
  5. Lecture d'un fichier .dbf
    Par San Soussy dans le forum Autres SGBD
    Réponses: 8
    Dernier message: 07/07/2004, 16h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo