MYSQL per shell daten einlesen funktioniert nicht
Hallo zusammen, ich bin begeistert was hier für tolle Tips und Hilfestellungen gegeben werden.
Vielleicht kann auch mir geholfen werden, ich sitze nun schon seit Tagen an einem Prob. mit dem ich alleine nicht fertig werde.
Liegt mit Sicherheit daran das ich gerade erst Anfange mich mit MYSQL zu beschäftigen.
Zu meinem Problem:
Ich hole mir aus einem logfile zeilen heraus die ich nun gerne in eine Datenbank schreiben möchte.
Der Aufbau der Datei
Monat Tag Uhrzeit Mac-Adresse
als Beispiel
Jun 26 15:34:15 00-50-56-c0-00-08
Jun 26 15:40:15 00-50-56-c0-00-08
u.s.w
Die Datei liegt nicht auf dem mysql server selbst sondern soll von einem client abgearbeitet werden.
Versucht habe ich es als erstes so
aber leider funktioniert es einfach nicht,
Fehlermeldung lautet Error 1064 at line 1: You have an error in your SQL syntax; check the Manual u.s.w...
Ich hoffe das sich einer meiner annimmt und helfen kann.
Vielen dank
Vielleicht kann auch mir geholfen werden, ich sitze nun schon seit Tagen an einem Prob. mit dem ich alleine nicht fertig werde.
Liegt mit Sicherheit daran das ich gerade erst Anfange mich mit MYSQL zu beschäftigen.
Zu meinem Problem:
Ich hole mir aus einem logfile zeilen heraus die ich nun gerne in eine Datenbank schreiben möchte.
Der Aufbau der Datei
Monat Tag Uhrzeit Mac-Adresse
als Beispiel
Jun 26 15:34:15 00-50-56-c0-00-08
Jun 26 15:40:15 00-50-56-c0-00-08
u.s.w
Die Datei liegt nicht auf dem mysql server selbst sondern soll von einem client abgearbeitet werden.
Versucht habe ich es als erstes so
#! /bin/sh
SQL="LOAD DATA LOCAL INFILE '/tmp/datei' INTO TABLE `wlan` FIELDS TERMINATED BY ';'
echo $SQL | mysql datenbank -h 192.168.100.2 .u user -p password
Fehlermeldung lautet Error 1064 at line 1: You have an error in your SQL syntax; check the Manual u.s.w...
Ich hoffe das sich einer meiner annimmt und helfen kann.
Vielen dank
Please also mark the comments that contributed to the solution of the article
Content-Key: 119671
Url: https://administrator.de/contentid/119671
Printed on: April 16, 2024 at 05:04 o'clock
2 Comments
Latest comment
Hallo,
Daneben sind gerade Datumswerte immer kritisch, da hier ein String (01.01.09) in einen Zahlenwert (interne Repräsentation des Datums in MySql) umgewandelt werden kann - und das funktioniert nicht für jeden String. Das gilt natürlich nur, wenn die Spalte in MySql dann auch von einem Datumstyp ist, und kein Stringtyp. Ersteres ist aber i.A. ziemlich sinnvoll, da man nur dann vernünftig Abfragen drauf fahren kann. Also: was uns hier noch fehlt ist die Definition deiner Tabelle.
Zu guter Letzt halte ich für fragwürdig, ob das Pipen (echo $SQL | ...) wie gewünscht funktioniert, das überlasse ich aber einem Linuxer.
Ach ja: in SQL="LOAD DATA LOCAL INFILE '/tmp/datei' INTO TABLE `wlan` FIELDS TERMINATED BY ';' fehlt am Ende noch ein ".
Gruß
Filipp
FIELDS TERMINATED BY ';'
bedeutet wohl, dass er zwischen den einzelnen Feldern (Monat, Tag..) in den Datensätzen jeweils ; erwartet. In deinen Beispieldaten ist da aber ein Leerzeichen.Daneben sind gerade Datumswerte immer kritisch, da hier ein String (01.01.09) in einen Zahlenwert (interne Repräsentation des Datums in MySql) umgewandelt werden kann - und das funktioniert nicht für jeden String. Das gilt natürlich nur, wenn die Spalte in MySql dann auch von einem Datumstyp ist, und kein Stringtyp. Ersteres ist aber i.A. ziemlich sinnvoll, da man nur dann vernünftig Abfragen drauf fahren kann. Also: was uns hier noch fehlt ist die Definition deiner Tabelle.
Zu guter Letzt halte ich für fragwürdig, ob das Pipen (echo $SQL | ...) wie gewünscht funktioniert, das überlasse ich aber einem Linuxer.
Ach ja: in SQL="LOAD DATA LOCAL INFILE '/tmp/datei' INTO TABLE `wlan` FIELDS TERMINATED BY ';' fehlt am Ende noch ein ".
Gruß
Filipp