Mailinglisten-Archive |
Hallo Norbert, > -----Original Message----- > in einer Tabelle existieren 25.000 Reccords. > Nun habe ich eine Spalte hinzugefuegt und moechte darin das Ergebnis > einer Berechnung speichern, der sich aus den anderen Spalten ergibt. > Grund: eine Abfrage muesste sonst in mehreren Schritten erfolgen, > da der zu errechnende Wert mit SQL-Mitteln nicht zu berechnen ist. > Falls das doch jemand schaffen sollte, verzoegert es IMHO die > Abfrage weit ueber Gebuehr. > > Nun die eigentliche Frage: > Es sind 25.000 SELECTS mit daraus abgeleiteten 25.000 UPDATES. > Wie und mit was schafft man ein derartiges Pensum abzuarbeiten ? Ich hab hier mal ein einfaches Beispiel mit einem Select und mehreren Updates, damit Du mal siehst, wie das in Perl laufen kann. (z.B. als cron-job). Das läßt sich ggf. auch adaptieren. Man kann das ganze notfalls natürlich auch über http starten, dan muß nur die Bildschirm-Ausgabe html-konform sein. ---------------------------------------------------------------------- #!/usr/bin/perl # # beispiel # use DBI; $user='meinusername' $pw='meinkennwort'; #tabellennamen generieren $artikel = 'artikel'; $warengruppen = 'warengruppen'; $database= 'meinedatenbank'; #################### log_line #################### # texte in eine trace-datei ausgeben sub log_line { my ($logline) = _(at)__; open(LOG_FILE,'>>trace.log'); print LOG_FILE localtime(time())." $logline\n"; close(LOG_FILE); } #################### los gehts #################### log_line("start:"); $dsn = "DBI:mysql:$database"; $dbh = DBI->connect ($dsn,$user,$pw); if ( !defined $dbh ) { log_line("Connect error: $database"); die print "Connect error!"; } $sql="select w.wg_nr,count(*) from $artikel a,$warengruppen w where a.ART_GRP like concat(w.ART_GRP,'%') group by w.wg_nr"; $sth=$dbh->prepare($sql); if (!defined $sth) { log_line("Cannot prepare $sql"); die print "Cannot prepare $sql"; } $usql="update $warengruppen set wg_numart=? where wg_nr=?"; $usth=$dbh->prepare($usql); if (!defined $usth) { log_line("Cannot prepare $usql"); die print "Cannot prepare $usql"; } $rc=$sth->execute(); #hier ggf. den rc prüfen while ( _(at)_row = $sth->fetchrow() ) { $rc=$usth->execute(($row[1],$row[0])); #hier ggf. den rc prüfen } $sth->finish; $usth->finish; $dbh->disconnect; log_line("stop:"); print "fettich...\n"; --- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive