Bonjour a tous,
voila je me tourne vers ici car je me retrouve face a un problème relativement complexe pour moi.
En effet je me retrouve a devoir traiter de façon quotidienneun fichier xml de plusieurs Go, suivant le volume de la journée précédente le fichier peut varier entre 800Mo et 5Go.
A l'intérieur c'est de l'xml basique sauf qu'il est non standardisé enfin j'appelle non standardisé le fait que dans certains champs, je peux me retrouver avec des infos qui n'ont rien à voir avec le champ, style le numéro de téléphone qui se trouve dans les balises adresse ou carrément le code postal et la ville dans le champ adresse au lieu d'être renseigné dans leur champ respectif.
Le but bien évidemment est de traiter le fichier xml pour l'intégré "proprement" dans une base de donnée qui tourne sous postgreSQL.
Résultat a cause de la construction anarchique du fichier xml impossible d'utiliser des mécaniques simples pour charger directement le xml dans la base (enfin a ma connaissance)
Je me tourne donc vers vous pour avoir deux infos.
Le traitement doit être le plus rapide possible tout en consommant le moins de ressource possible et la je me pose la question vers quel langage partir pour arriver à résoudre les problèmes.
Je pense que partir peut etre sur une base de PERL avec xml::Twig serait une bonne solution pour travailler en mode SAX ce qui permet de limiter l'impact sur les ressources du serveur vu la taille du fichier xml, mais au niveau manipulation des données pour justement retrouver ces "petits" dans les fiches mal remplie, je ne sais pas si le PERL va bien s'adapter.
Pour ce qui est de la connexion BDD PERL et PostgreSQL me semble être robuste.
Maintenant je vois aussi que le python a pas mal le vent en poupe mais je suis moins bon dedans.
Sinon je me demandé si avec peut etre simplement du xml avec de la validation xslt ou quelque chose du genre je pouvais arriver au même résultat.
Je connais relativement mal les possibilité de travail du xml c'est pas trop mon dada on va dire.
je suis preneur de conseil ou piste pour résoudre mon problème.
Merci d'avance.
Partager