Mysql und Batch
Hallo,
ich habe eine Frage:
Ich möchte mit Bat eine externe Mysql-Datenbank abrufen. Die Bat-Datei läuft auf meinem Rechner und die Mysql-Datenbank auf meinem Webhosting-Server Online. Die Rechte für den Mysql-Connect von extern sind vorhanden. Aber wie kann ich mit der externen Datenbank via Internet/DSL connecton und Spalten auslesen?
Alles Infos die man dazu findet, gehen von einer Mysql-Datenbank auf dem Localhost aus, worauf die Bat-Datei läuft- diese rufen dann eine mysql.exe auf... aber das geht ja hier nicht. Kann mir jemand weiterhelfen?
Gruß
Niklas Gössl
ich habe eine Frage:
Ich möchte mit Bat eine externe Mysql-Datenbank abrufen. Die Bat-Datei läuft auf meinem Rechner und die Mysql-Datenbank auf meinem Webhosting-Server Online. Die Rechte für den Mysql-Connect von extern sind vorhanden. Aber wie kann ich mit der externen Datenbank via Internet/DSL connecton und Spalten auslesen?
Alles Infos die man dazu findet, gehen von einer Mysql-Datenbank auf dem Localhost aus, worauf die Bat-Datei läuft- diese rufen dann eine mysql.exe auf... aber das geht ja hier nicht. Kann mir jemand weiterhelfen?
Gruß
Niklas Gössl
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 124783
Url: https://administrator.de/contentid/124783
Ausgedruckt am: 23.11.2024 um 02:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo,
Gruß
Filipp
diese rufen dann
eine mysql.exe auf... aber das geht ja hier nicht.
Wieso? mysql.exe hat einen Option -h mit der man einen Remote-Host angeben kann. Siehe auch http://dev.mysql.com/doc/refman/5.0/en/mysql-command-options.htmleine mysql.exe auf... aber das geht ja hier nicht.
Gruß
Filipp
Moin Niklasg,
Grüße
Biber
Die Batch-Datei listet dann die entsprechenden Datensätze auf.
Zeigst Du bitte Beispiel?Aber wie kriege ich das nun hin, dass ein bestimmter Wert aus der Datenbank in eine Variable gepeichert wird, auf die ich in der Batchdatei zugreifen kann damit ich evtl. Bedingungen stellen kann, wenn der Wert der Variable ==1 ist, dann soll er etwas bestimmtes in der Batchdatei ausführen.
Machst Du bitte krass konkret?Also wie ich die Bedingung stelle ist klar, aber unklar ist wie ich den Wert 1 aus der Datenbank in eine Batch-Variable (%VARIABLE1%) schreiben kann.
Sicher mit einer FindStr-FOR/F -Kombination, aber dazu müsste man/frau den Resultset-String mal sehen.Ich hoffe ja dass das überhaupt möglich ist.
Die Schalke-Fans hoffen seit einem halben Jahrhundert auf den Pokal... du hast viel bessere Chancen.Grüße
Biber
Moin Niklasg,
in Batchdateien ist es (auch unter Windows) möglich, die (Bildschirm-)Ausgaben von aufgrerufenen Programmen/Befehlen in Dateien umzulenken und/oder als Eingabe, als input zu verwenden.
Wie du es ja auch vorhast.
Als Vorüberlegung muss bei der CMD.exe, dem M$-Befehlsinterpreter allerdings das "Weilche Zeile/welche Zeilen des Outputs brauche ich?" erfolgen, da die CMD.exe nur ZEILEorientiert arbeitet.
Um Deine Zeile mit dem Suchwort "mailsenden" eindeutig zu beschreiben gäbe es mehrere Möglichkeiten
In jedem dieser Fälle (welcher bei dir am Sinnvollsten ist, müsstest du nochmal kurz ergrübeln) kann das eine Wort dieser relevanten Zeile nit einer FOR/F-Anweisung und dem SET-Befehl in eine Variable geschrieben werden.
Beispiel, wenn NUR das Wort "mailsenden" in einer Datei stünde ODER "mailsenden" die letze Zeile einer Textdatei ist:
So die Skizze.
---> Sauberer/empfehlung wäre:
--> Ausgabe wäre dann in dieser einen RS-Zeile:
Grüße
Biber
in Batchdateien ist es (auch unter Windows) möglich, die (Bildschirm-)Ausgaben von aufgrerufenen Programmen/Befehlen in Dateien umzulenken und/oder als Eingabe, als input zu verwenden.
Wie du es ja auch vorhast.
Als Vorüberlegung muss bei der CMD.exe, dem M$-Befehlsinterpreter allerdings das "Weilche Zeile/welche Zeilen des Outputs brauche ich?" erfolgen, da die CMD.exe nur ZEILEorientiert arbeitet.
Um Deine Zeile mit dem Suchwort "mailsenden" eindeutig zu beschreiben gäbe es mehrere Möglichkeiten
- die Zeile mit "mailsenden" (oder welcher Aktion auch immer) ist die letzte Zeile der Ausgabe des Batches.
- die Zeile mit der Aktion ist immer die Zeile nach der Zeile mit der Angabe "Tabelle_xy"
- die Zeile mit der Aktion "mailsenden" muss eines der Worte "mailsenden", "abbrechen", "noaction", "delete" (als Beispiele) enthalten
In jedem dieser Fälle (welcher bei dir am Sinnvollsten ist, müsstest du nochmal kurz ergrübeln) kann das eine Wort dieser relevanten Zeile nit einer FOR/F-Anweisung und dem SET-Befehl in eine Variable geschrieben werden.
Beispiel, wenn NUR das Wort "mailsenden" in einer Datei stünde ODER "mailsenden" die letze Zeile einer Textdatei ist:
....
REM... In einem Batch..
FOR /F %%i in (D:\Ein\ResultVonnerMySQLQuery.txt) Do Set "myVar=%%i"
If "%myVar%" == "mailsenden" goto zum_befehl_mail_senden
...
---> Sauberer/empfehlung wäre:
- die Query erweitern um eine weitere Spalte, in der ein (toi toi toi) eindeutiger Suchbegriff erzeugt wird.
SELECT DISTINCT action, 'ACTION' as whatever FROM tabelle_xy WHERE ID LIKE '2'
--> Ausgabe wäre dann in dieser einen RS-Zeile:
mailsenden ACTION
... und nach der Zeile, die das Suchwort "ACTION" enthält kannst Du exakt suchen mit Find/FindStr.Grüße
Biber