Hallo,
ich muss zur täglichen Analyse Logfiles in Form von CSV-Dateien aus einer Datenbank erstellen.
Das funktioniert soweit auch wie gewünscht.
Die Abfrage erzeugt ein jeden Tag ein CSV-File inkl. Datum im Dateinamen mit den entsprechenden Einträgen.
Nun muss eine weitere Spalte hinzugefügt werden, nämlich die Differenz aus zwei Zeiten (StartTime und EndTime sind jeweils DATETIME-Einträge in der Tabelle):
Wie verknüpfe ich das mit der bestehenden Abfrage? Ich habe es mit UNIONS profbiert (SELECT * UNION SELECT TIME_TO_SEC(...) versucht, das klappt leider alles nicht.
Viele Dank im Vorraus... .
Moppi
ich muss zur täglichen Analyse Logfiles in Form von CSV-Dateien aus einer Datenbank erstellen.
Das funktioniert soweit auch wie gewünscht.
Code:
SET @effectiveFileName = CONCAT('C:/temp/', 'log','_', DATE_FORMAT(NOW(), '%Y-%m-%d'), '.csv');
SET SESSION group_concat_max_len = 100000;
SET @queryStr = (
SELECT
CONCAT('SELECT * INTO OUTFILE \'',
@effectiveFileName,
'\' FIELDS TERMINATED BY \',\' ENCLOSED BY \'"\' LINES TERMINATED BY \'\r\n\' FROM (SELECT ',
GROUP_CONCAT(CONCAT('\'', COLUMN_NAME, '\'')),
'UNION ALL SELECT * FROM database.log WHERE DATE(database.log.StartTime) = \'',
CURDATE(),
'\') as tmp')
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'log' AND
TABLE_SCHEMA = 'database'
ORDER BY ORDINAL_POSITION
);
PREPARE stmt FROM @queryStr;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
Die Abfrage erzeugt ein jeden Tag ein CSV-File inkl. Datum im Dateinamen mit den entsprechenden Einträgen.
Nun muss eine weitere Spalte hinzugefügt werden, nämlich die Differenz aus zwei Zeiten (StartTime und EndTime sind jeweils DATETIME-Einträge in der Tabelle):
Code:
SELECT TIME_TO_SEC(TIMEDIFF((SELECT StartTime FROM log ORDER BY ID DESC Limit 0,1) , (SELECT EndTime FROM log ORDER BY ID DESC Limit 1,1))) AS IdleToLast'
Wie verknüpfe ich das mit der bestehenden Abfrage? Ich habe es mit UNIONS profbiert (SELECT * UNION SELECT TIME_TO_SEC(...) versucht, das klappt leider alles nicht.
Viele Dank im Vorraus... .
Moppi