Forum: PC-Programmierung MySQL auslesen


von DanS S. (dns712)


Lesenswert?

Hallo,

Ich habe ein Apache2 Webserver auf einem Raspberry Pi.

Über den Webserver schreibe ich einen Wert in eine Datenbank, jetzt 
möchte ich dieses Wert mit einem Wert aus einer lokalen Datei vergleich 
und was ausführen am liebsten in einer *.sh, wie bekomme ich diesen Wert 
von der Datenbank in die Bash-Datei.

Der vergleich soll jede Minute erfolgen, da ich über den Webserver eine 
Zeit in die Datenbank speichert wann was passieren soll.

Oder gibt es da einen besseren Lösungsweg?

Ich bin ein Anfänger und habe nur Grundkenntnisse in MYSQL,PHP und JS.

von WaMin (Gast)


Lesenswert?


von Sheeva P. (sheevaplug)


Lesenswert?

DanS S. schrieb:
> Über den Webserver schreibe ich einen Wert in eine Datenbank, jetzt
> möchte ich dieses Wert mit einem Wert aus einer lokalen Datei vergleich
> und was ausführen am liebsten in einer *.sh, wie bekomme ich diesen Wert
> von der Datenbank in die Bash-Datei.
>
> Der vergleich soll jede Minute erfolgen, da ich über den Webserver eine
> Zeit in die Datenbank speichert wann was passieren soll.
>
> Oder gibt es da einen besseren Lösungsweg?

Du kannst mit dem Kommandozeilenprogramm mysql(1) natürlich auch Deine 
Datenbank abfragen und den gewünschten Wert aus der Antwort parsen. 
MySQL hat außerdem einen Event Scheduler [1,2], mit dem Du SQL Queries, 
aber natürlich auch Stored Procedures ausführen kannst.

Oder Du könntest das, "was passieren soll", mit dem Kommando at(1) als 
Job für den At-Daemon atd(8) anlegen, statt es in eine Datenbank zu 
schreiben und von dort zu lesen. Oder Du schreibst das, "was passieren 
soll", nicht in die Datenbank, sondern als Datei in einen bestimmtes 
Verzeichnis; die Datei kann dann als Dateinamen den Zeitpunkt der 
Ausführung erhalten und ein minütlicher Cronjob schaut in das 
Verzeichnis, ob gerade etwas zur Ausführung ansteht...

Es gibt dabei etliche Möglichkeiten; welche für Dich die Beste ist, 
hängt primär davon ab, "was passieren soll", und sekundär natürlich von 
Deinen eigenen Fähigkeiten -- Du hast also die Qual der Wahl. ;-)

[1] https://dev.mysql.com/doc/refman/5.7/en/events-configuration.html

[2] https://dev.mysql.com/doc/refman/5.7/en/create-event.html

von c.m. (Gast)


Lesenswert?

du kannst mit der bash nur schwer werte aus einer datenbank auslesen. 
weil die bash keine "treiber" hat um sich an die datenbank zu verbinden.
also… prinzipiell.
möglicherweise geht das doch z.b. über "HERE-DOCUMENTS" in der art 
(ungetestet, wahrscheinlich falsch)
[code]
mysql - username -p passwort <<EOF
select wert from tabelle where...
exit
EOF | [grep/awk]
[code]

normalerweise benutzt man eine scriptsprache mit der man sich an die 
datenbank verbinden, und selects absetzten kann. ich kenne da z.b. perl
http://sql-info.de/mysql/examples/Perl-DBI-examples.html
aber python kann das mit sicherheit auch.

von DanS S. (dns712)


Lesenswert?

Kann man mit einem PHP-script, welchen lokal von einer bash ausgeführt 
wird die Datenbank auslesen und lokal abspeichern?

Finde keinen Weg über eine Bash Daten aus der Datenbank auszulesen.
Hat jemand damit Erfahrungen?

würde gerne bei PHP und JS bleiben und nicht noch zusätzlich perl oder 
python lernen.

von (prx) A. K. (prx)


Lesenswert?

Wie c.m. schon schrieb kann man per Shell-Script ein SELECT absetzen:
1
mysql --silent --user=xxxx --password=yyyy mysql <<EOF
2
select concat(user,"@",host) from user where super_priv="Y"
3
EOF

: Bearbeitet durch User
von c.m. (Gast)


Lesenswert?

DanS S. schrieb:
> Kann man mit einem PHP-script, welchen lokal von einer bash
> ausgeführt
> wird die Datenbank auslesen und lokal abspeichern?
>
> Finde keinen Weg über eine Bash Daten aus der Datenbank auszulesen.
> Hat jemand damit Erfahrungen?
>
> würde gerne bei PHP und JS bleiben und nicht noch zusätzlich perl oder
> python lernen.

kein problem. php kann sich (wenn es zur compile-zeit nicht 
ausgeschaltet wurde - unwahrscheinlich) an mysql verbinden.
die (script)sprachen sind sich da btw ziemich ähnlich: connect an db, 
select vorbereiten, select an db schicken, ergebins(se) in einer loop 
abholen.
google halt "mysql php", da bekommst du mehr ergebnisse als hier 
antworten ;)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.