[perl]XML insert en update in mysql-database

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Paultje3181
  • Registratie: November 2002
  • Laatst online: 20:34
Ik heb een XML-file die ik regelmatig gemaild krijg. Deze bevat informatie die ik in een mysql-database op wil slaan. Alleen gebeurt het ook dat er bij een bestaande gebruiker info al bestaat. Nu wil ik de meest recente versie bewaren, van de info.

De insert van de XML-file is geen probleem. Ik kan ook een status active toewijzen, maar om nu vervolgens de oude versie er uit te filteren heb ik niet echt een idee om dit aan te pakken. Ik zou er voor kunnen kiezen om de nieuwe versie opnieuw in een XML te zetten, en vervolgens vanuit daar te filteren, alleen lijkt me dit erg omslachtig.

Ongetwijfeld is er een makkelijker manier. Alleen weet ik zo niet hoe. Googlen op XML Perl Mysql Update levert niet veel nuttigs op, en zoeken op insert heeft me al opgeleverd hoe ik de file uitlees, hetgeen werkt.

Acties:
  • 0 Henk 'm!

  • mr_derk
  • Registratie: September 2005
  • Laatst online: 22:03
Zit er geen unieke referentie in de XML? Deze kan je bij de insert opslaan in een losse kolom. Voordat je opslaat check je eerst of er al een rij bestaat met deze unieke referentie. Zo ja; update zo nee: insert.

Acties:
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 21:30
Paultje3181 schreef op zondag 16 augustus 2015 @ 22:06:
Ik heb een XML-file die ik regelmatig gemaild krijg. Deze bevat informatie die ik in een mysql-database op wil slaan. Alleen gebeurt het ook dat er bij een bestaande gebruiker info al bestaat. Nu wil ik de meest recente versie bewaren, van de info.

De insert van de XML-file is geen probleem. Ik kan ook een status active toewijzen, maar om nu vervolgens de oude versie er uit te filteren heb ik niet echt een idee om dit aan te pakken. Ik zou er voor kunnen kiezen om de nieuwe versie opnieuw in een XML te zetten, en vervolgens vanuit daar te filteren, alleen lijkt me dit erg omslachtig.

Ongetwijfeld is er een makkelijker manier. Alleen weet ik zo niet hoe. Googlen op XML Perl Mysql Update levert niet veel nuttigs op, en zoeken op insert heeft me al opgeleverd hoe ik de file uitlees, hetgeen werkt.
Je zou een identifier per XML kunnen aanmaken, bijvoorbeeld op basis van de timestamp van het moment waar je de XML binnenkrijgt. Die schrijf je weg bij alle records zodat je een identifier hebt van deze "job" (XML) die je verwerkt hebt.
Alles wat dan niet deze identifier bezit kan je verwijderen en heb je dus alleen de meest up-to-date variant in je DB staan.

Dit is de manier waarop wij meerdere grote jobs oplossen en uit elkaar kunnen houden welke data het meest recent is. Om het echt netjes te houden zou je nog een apart tabelletje bij kunnen houden waar je job-id's (identifiers) in staan en daarbij een timestamp zodat je kan zien dat jobid 129571260127 binnengekomen is op moment A, en job 136584262327 op moment B.

Acties:
  • 0 Henk 'm!

  • Paultje3181
  • Registratie: November 2002
  • Laatst online: 20:34
Mja, dus toch wel eerst inserten en dan vergelijken. Uiteindelijk toch de makkelijkste manier, al lijkt het omslachtig.