[mysql] update batch

Pagina: 1
Acties:

  • GrimaceODespair
  • Registratie: December 2002
  • Laatst online: 10:32

GrimaceODespair

eens een tettenman, altijd ...

Topicstarter
Ik heb een mysql database met een tabel die geupdate moet worden. Voor die update heb ik een lijst (+- 600 items) beschikbaar met data, in een bestand.

De update is van de vorm
SQL:
1
UPDATE mytable SET myfield='myvalue' WHERE myfield='myoldvalue';
waarbij myfield en myoldvalue name/value-pairs zijn uit mijn lijst.

Nu vraag ik mij af wat de beste manier is om hiermee om te gaan. Ik vertrek vanuit een linux shell van waaruit ik mysql aanroep. De opties zijn:
  1. mysql 600 keer aanroepen met een nieuwe query
  2. mysql 1 keer aanroepen en een script uitvoeren waarin die 600 query's staan (dit is natuurlijk sowieso beter dan het vorige)
  3. mysql 1 keer aanroepen met 1 hele grote query waarin die 600 name/value-pairs verwerkt zijn (hoewel ik vermoed dat dit met deze query niet zal lukken in MySQL)
  4. ...
Nu zouden punt 1 en 2 mij wel lukken, en vermoed ik dat 3 niet kan. Mijn vraag is eigenlijk: weten jullie of er nog een efficiëntere manier bestaat om 600 records in mysql te updaten, uitgaande van een een externe lijst in linux (dus pipen etc is allemaal mogelijk)?

Wij onderbreken deze thread voor reclame:
http://kalders.be


  • Rotjeknor
  • Registratie: April 2001
  • Laatst online: 03-02 15:29
Als dit om een eenmalige actie gaat, zou ik het oplossen door via php je file in te lezen en de queries te laten uitvoeren. Dan lijkt me ook niet echt nuttig na te gaan of dit efficient is of niet, in die tijd dat je nu zit te lezen had je het al uitgevoerd kunnen hebben lijkt me (-:

Ook Knor is aangestoken met het ligfietsvirus!


  • GrimaceODespair
  • Registratie: December 2002
  • Laatst online: 10:32

GrimaceODespair

eens een tettenman, altijd ...

Topicstarter
Ik ben een programmeur, dus ik wil hier graag een structurele oplossing voor :+ Het gaat mij ff niet om het feit óf het mij lukt, meer om de manier waarop. En als ik hier nou tips krijg, dan weet ik voor volgende keer tenminste ook wat de mogelijkheden zijn.

Het geheel gaat straks trouwens gescheduled worden, maar niet erg intensief, dus wat dat betreft hoeft het niet hyper-efficiënt.

btw: ik had niks gezegd over php.

[ Voor 5% gewijzigd door GrimaceODespair op 21-05-2003 11:59 ]

Wij onderbreken deze thread voor reclame:
http://kalders.be


  • BoAC
  • Registratie: Februari 2003
  • Laatst online: 22-08 21:48

BoAC

Memento mori

Gewoon in een loop-script de queries uitvoeren. Is volgens mij de simpelste manier.
Dit hoeven maar een paar regels te zijn in welke taal dan ook.

Dus bestandje laden, value lesen querie uitfoeren, value lese, que..... enz.

Verwijderd

in je mysql prompt \. file.sql

lijkt mij wel een aardige oplossing

  • GrimaceODespair
  • Registratie: December 2002
  • Laatst online: 10:32

GrimaceODespair

eens een tettenman, altijd ...

Topicstarter
BoAC schreef op 21 mei 2003 @ 12:02:
Dus bestandje laden, value lesen querie uitfoeren, value lese, que..... enz.
Toegepast op de combinatie shell script/mysql ben ik dan wel 600x mysql aan het aanroepen. En in mysql zelf kan ik dit niet, tenzij dus dat ik eerst 600 queries exporteer.

Ik denk toch dat dat laatste het meest efficiënt gaat zijn.
Verwijderd schreef op 21 May 2003 @ 12:06:
in je mysql prompt \. file.sql
Het uitvoeren van een sql script vanuit een bestand is niet zozeer het probleem. Ik vroeg mij af of er gewoon iets efficiënters bestond dan die 600 queries uit te voeren. Maar volgens mij zoek ik gewoon iets onzinnigs.

/me gaat het toch maar bij 600 queries houden

[ Voor 34% gewijzigd door GrimaceODespair op 21-05-2003 12:15 ]

Wij onderbreken deze thread voor reclame:
http://kalders.be

Pagina: 1