SQL-Befehl regelmäßig ausführen

fmschrader

Registered User
Hallo Forum,

ich möchte einen SQL-Befehl in regelmäßigen Abständen ausführen lassen.
Vermutlich geht das am Besten mit einem Cron-Job.

Es geht um einen Delete-befehl, der auf verschiedenen Datenbanken
ausgeführt werden soll. Das muß ich wohl in eine Datei schreiben.

Kann mir jemand helfen, das zu formulieren?

Ciao

Martin
 
Mit etwas mehr Input besstimmt
Ich würde eine PHP Datei schreiben und die dann per Cron ausführen lassen
 
Hallo Martin,

willst Du es als Bash-, PHP- oder Perl-Script?

Wahrscheinlich als Bash:
Code:
#!/usr/bin/bash

DBUSER=web1
DBPASSWD=webwebwebwebweb

mysql -u$DBUSER -p$DBPASSWD < delete_befehle.sql

Die Datei delete_befehle.sql sieht dann so aus:
Code:
use usr_web1_1;
delete from Tabelle1 where Datum<CURDATE();
use usr_web1_2;
delete from Tabelle2 where Datum<CURDATE();

huschi.
 
Hi Huschi,

danke für den Tip, probier ich gleich mal aus. :)

Was bedeutet die erste Zeile? "#!/usr/bin/bash"

Muß ich das irgendwie anpassen?

Ciao

Martin
 
Die Zeile gibt an, von welcher Shell der Code interpretiert werden soll.
/usr/bin/bash sieht nach Suse aus, bei debian wäre es /bin/bash.
Schau einfach nach wo deine bash liegt, und passe ggf den Pfad an.

MfG
 
Hmm, es ist ein SUSE, aber die Datei bash gibt's nur unter /bin.
Dann werd ich mal den Pfad so ändern.

Also ich hab jetzt unter /etc/cron.hourly eine Datei "delete" angelegt.
In dieser Datei lasse ich die Datei "/etc/delete_befehle.sql" ausführen,
die die tatsächlichen Befehle enthält.

Kann ich kontrollieren, ob das funktioniert? Wird im Fehlerfall irgendeine Meldung geloggt?

Ciao

Martin
 
fmschrader said:
aber die Datei bash gibt's nur unter /bin.
Mein Fehler! Da ich ein alter Perler bin und Perl immer unter /usr/bin/perl liegt war dies einfach nur ein Gewohnheitsfehler.

Kann ich kontrollieren, ob das funktioniert? Wird im Fehlerfall irgendeine Meldung geloggt?
Fehler werden per Email ausgegeben. Allerdings nur 'echte' Fehler, wie z.B. daß das DB-Passwort nicht stimmt, oder wenn in der delete.sql ein SQL-Syntaxfehler ist.

Testen kannst Du es, indem Du einen Datensatz anlegst, von dem Du weißt, daß er gelöscht werden sollte. :)

huschi.
 
Testen kannst Du es, indem Du einen Datensatz anlegst, von dem Du weißt, daß er gelöscht werden sollte.

Ist schon klar.. würdest Du das so machen?;)

Ciao

Martin
 
Last edited by a moderator:
fmschrader said:
Ist schon klar.. würdest Du das so machen?;)
Hängt von der Datenbank ab. :)

Aber natürlich würde ich die SQL-Befehle vorher genau prüfen und auf einem Test-System laufen lassen. Aber wie ich Dich kenne, hast Du kein Test-System, gelle? :D

huschi.
 
Back
Top