Jump to content

Import XML


Recommended Posts

Bonjour,

Dans le cadre du développement d'une librairie numérique, je suis amené à parser de gros fichiers XML (la taille faisant jusqu'à 300Mo) pour extraire des notices bibliographique.

J'ai lu que dans ce cas de figure il était préférable d'utiliser SAX que DOM ? Qu'en pensez-vous ? Je ne connais pas du tout SAX.

Par ailleurs, je dois faire un tri parmi les notices et en extraire certaines (qui correspondent en fait à des ouvrages sans DRM). Le plus simple n'est-il pas de créer un nouveau fichier XML contenant uniquement les notices souhaitées et de le parser ensuite pour en extraire les infos et les insérer dans la base de données (mysql) ?

Toute contribution sera la bienvenue !

Merci.

Link to comment
Share on other sites

Je fait souvent des imports de fichiers divers. En général je procede comme ceci :

1/ creation d'une table temporaire
2/ injection du ou des fichiers dans la table
3/ traitements divers (formatage, nettoyage....)
4/ import dans la bdd finale.

Ca permet d'avoir une grande souplesse dans les traitements, et un code très propre. D'autre part cela evite d'avoir des inserts à la tonne en utilisant une seule requete pour l'import. LA reprise sur erreurs devient un vrai bonheur, et en cas de modif du fichier en entrée : les doigts dans le nez. Testé et approuvé sur des grosses volumétries.

Link to comment
Share on other sites

1/ creation d'une table temporaire
2/ injection du ou des fichiers dans la table
3/ traitements divers (formatage, nettoyage....)
4/ import dans la bdd finale.


Merci. Insérer les données dans la base faisait également partie de mes hypothèses de travail. Je crois que je vais passer par là ce qui sera plus souple ensuite pour les traiter !
Link to comment
Share on other sites

Au fait, pour etre efficace, il faut faire des insert de masse (insert into talbeDest select from tableTemporaire) pour l'alim de la table de destination finale et pas une boucle lecture/ecriture à chaque ligne.

Pour l'alim de la table temporaire, si tu as un dédié, il y a des outils pour monter un xml directement dans la table. Et tu fais les traitements (toujours en masse, pas par ligne avec un foreach) en sql.

Pour les traitements, si tu mets les bons index, tu peux obtenir des gains énormes.

Link to comment
Share on other sites

Pour l'alim de la table temporaire, si tu as un dédié, il y a des outils pour monter un xml directement dans la table. Et tu fais les traitements (toujours en masse, pas par ligne avec un foreach) en sql.


Tu m'intéresses là ! Tu peux développer un peu ? Merci !
Link to comment
Share on other sites

hop : http://jcrozier.developpez.com/tutoriels/sgbd/mysql/xml/#LI-2-3

Sinon, par xlst (un petit coup de google devrait te renseigner).


Merci. J'ai trouvé un lien intéressant : http://forum.phpfrance.com/faq-tutoriels/importer-des-donnees-xml-dans-une-base-donnees-mysql-t243506.html

qui propose préconise l'utilisation de LOAD XML INFILE qui n'est disponible qu'à partir de MySQL 6.

EDIT : mon hébergeur vient de me signaler que "Cette version n'est pas supportée par nous et est beaucoup trop instable.".
Je vais devoir passer par les solutions disponibles sur le 5... dommage.
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...