Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Ergebnis aus SQL-Abfrage auswerten

Frage Entwicklung Batch & Shell

Mitglied: ghostX

ghostX (Level 1) - Jetzt verbinden

02.04.2014, aktualisiert 10:09 Uhr, 2791 Aufrufe, 5 Kommentare

Hallo Zusammen!

stehe vor folgendem Problem:
Habe einen SQL-Select Statement. Per Batch wird ein Connect an die DB gemacht und das Select ausgeführt. Das Ergebnis hat 2 Spalten: Datum/Uhrzeit und String. Ich möchte nun das Ergebnis per Script auslesen und abhängig vom Ergebnis andere Batch-Dateien starten:
IF Datum/Uhrzeit schon länger als eine Stunde her (Vergleich mit aktueller Zeit) AND String = 'Text1'
THEN START Programm1.bat
IF Datum/Uhrzeit schon länger als eine Stunde her (Vergleich mit aktueller Zeit) AND String = 'Text2'
THEN START Programm2.bat

Es kann auch sein dass überhaupt keine Datensätze vorhanden sind. Dann soll einfach garnichts passieren.

Bin leider noch ein Laie bei Batch-Programmierung und bei IF-Anweisungen stoss ich schon an meine Grenzen. Ich hoffe Ihr könnt mir dabei helfen.

Ich weiß auch nicht ob das Ergebnis des Selects erst in eine Datei ausgegeben werden muss um es danach auszulesen oder ob es auch anders möglich ist.
Mitglied: Arano
02.04.2014 um 18:19 Uhr
Hi ghostX,

meine Batchfähigkeiten sind zwar auch begrenzt aber kreativ bin ich auch
Und über Datenbankabfragen per Batch habe ich noch nie nachgedacht...

Wie wäre es mit zwei Datenbankabfragen ?
Die erste liest alle Einträge WHERE `string`='Text1' AND `date`>now()-3600 und
das zweite liest alle Einträge WHERE `string`='Text2' AND `date`>now()-3600

Dann hast du zwei Ergebnisse für zwei Aktionen.
Das beschränkt die IF-Bedingung in der Batch nur noch auf ein IF ergebnis1_anzahl > 0

Wenn das nicht hilft, musst du wohl erst einmal weiter warten bis sich jemand meldet.


~Arano

[...]
Und wenn man noch GROUP BY und COUNT() einarbeitet, müsste sich beide Abfragen wieder in einer vereinen lassen. Welches dann eine Ergebnistabelle liefern sollte die lediglich zwei Datensätze enthält, jeweils die passende Anzahl für die vorkommen von Text1 und Text2.
...glaube ich jedenfalls
Bitte warten ..
Mitglied: SaschaRD
03.04.2014, aktualisiert um 07:45 Uhr
Hallo ghostX,

welche Datenbank (mySQL, Oracle, etc.)?

Könntest Du bitte einen Output deines Statements posten?
Hier habe ich vielleicht etwas, was dir helfen könnte:
01.
 SQLPLUS SYS/SYS@localhost:1521/db.world as SYSDBA < sqlexec.sql > sql.txt
So kann der Inhalt in eine beliebige Datei umgeleitet werden (Beispiel bei einer Oracle DB).

Gruß, Sascha
Bitte warten ..
Mitglied: ghostX
04.04.2014 um 08:39 Uhr
Hi Arano,

das ist ne gute Idee mit 2 Abfragen, daran hab ich garnicht gedacht. Das macht die Sache natürlich etwas einfacher. Dann würde es genügen in meiner IF nur abzufragen ob ein Datensatz vorhanden ist oder nicht. Weißt du wie das dann aussehen muss?
Bitte warten ..
Mitglied: ghostX
04.04.2014 um 09:23 Uhr
Hallo Sascha,

es ist eine Oracle DB.

und so sieht das Ergebnis in der Textfile aus

01.
SQL*Plus: Release 10.2.0.1.0 - Production on Fr Apr 4 09:21:17 2014 
02.
 
03.
Copyright (c) 1982, 2005, Oracle.  All rights reserved. 
04.
 
05.
 
06.
Verbunden mit:  
07.
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production 
08.
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP, 
09.
Data Mining and Real Application Testing options 
10.
 
11.
SQL>   2    3    4    5    6    7    8    9   10   11   12   13   14   
12.
STRING		                   DATUM 
13.
------------------------- ------------------- 
14.
AB07C			  04.04.2014 07:40:01 
15.
 
16.
SQL> Verbindung zu Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production 
17.
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP, 
18.
Data Mining and Real Application Testing options beendet
Bitte warten ..
Mitglied: Arano
04.04.2014, aktualisiert um 20:22 Uhr
Hi,

naja... ich sagte ja, das meine Fähigkeiten dahingehen auch beschränkt seien aber meine Kreativität nicht

Ein Problem wirst du aber selber in die Hand nehmen müssen. Ich verwende eine MySQL-Datenbank ! Konnte das Query also nur dort testen, falls das zum Problem wird - gehört ja mittlerweile auch irgendwie zu Oracel.

Weil ich Debian als Betriebssystem verwende konnte ich jetzt auch nicht viel probieren um die Ausgabe zu parsen - um nicht zu sagen, gar nicht.
Darum habe ich das Query noch weiter umgestrickt:
Neben dem GROUP BY und COUNT(*) habe ich noch ein IF() eingefügt
01.
  SELECT IF( COUNT(*)=0, 
02.
             'ES_GIBT_KEINE_TREFFER', 
03.
             'WIR_HABEN_WAS_GEFUNDEN')       as treffer 
04.
    FROM `ghostx` 
05.
   WHERE `string`='textA' 
06.
     AND `date`<NOW()-3600 
07.
GROUP BY `string`;
Ich wollte damit erreichen das wir nur eine Ergebniszeile erhalten, die je nach Anzahl gefundener Datensätze das eine Keyword oder das andere enthält. Findet mein Query keine passenden Datensätze wird allerdings eine leere Ergebnistabelle zurückgegeben. ("Empty set 0,00 sec")
Macht aber nichts, denn wir suchen danach einfach nur nach dem Keyword für gefundene Datensätze - entweder es ist da oder nicht.

Nach dem Query können wir mittels findstr in der Ausgabe nach der Zeichenkette "WIR_HABEN_WAS_GEFUNDEN" suchen und dann ganz bequem den %ERRORLEVEL% auswerten.
01.
findstr /C:WIR_HABEN_WAS_GEFUNDEN select-ausgabe-date.txt >nul 
02.
if %ERRORLEVEL% == 0 ( 
03.
    REM starte Programm A 
04.
)

So liefert die Datenbank dir das Ergebnis das du suchst und die Batch ist furchtbar simpel gehalten


Schönes Wochenende
~Arano
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Datenbanken
SUM oder AVG in SQL Abfrage dauert viel zu lange warum? (5)

Frage von samet22 zum Thema Datenbanken ...

Datenbanken
gelöst SQL-Abfrage mit MAX() (9)

Frage von FrAmEr zum Thema Datenbanken ...

Datenbanken
gelöst Schleifen in SQL-Abfrage bei 2 Tabellen (2)

Frage von Aximand zum Thema Datenbanken ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (17)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

DSL, VDSL
DSL-Signal bewerten (14)

Frage von SarekHL zum Thema DSL, VDSL ...