Hallo zusammen ich habe ein Problem,
ich habe einen Ubuntu Server auf dem läuft MySQL und dort sind mehrere Datenbanken aktiv.
Dieser Server hat die Aufgabe sich automatisch via Open VPN auf verschieden andere Rechner zu verbinden von dort Kopiert er .txt Dateien , "Analysiert" diese und schreibt diese in eine Datenbank. Soweit funktioniert das auch, meistens jedenfalls. Das problem ist allerdings das die Daten so in der Datenbank landen das sie nicht wirklich weiterverarbeitet werden können.
Zur Erklärung:
Jede der .txt Dateien enthält Messwerte immer alle von einem Tag und einem Sensor. Aktuell werden in der Datenbank zu jedem Sensor eine Tabelle geführt. Um diese Daten vergleichend abzufragen ist ein enormer Aufwand nötig, zusätzlich wird auch noch für jedes Jahr eine zusätzliche Datenbank erzeugt.
Das würde ich gern ändern und zwar möchte Ich eine Datenbank welche nur drei Tabellen enthält:
MESSWERT
SENSOR
STANDORT
Diese sollen miteinander alle Abfragen möglich machen dazu enthalten die Tabellen folgende Felder:
MESSWERT:
ID
TIMESTAMP
WERT
SENSOR_ID
SENSOR:
ID
NAME
STANDORT_ID
STANDORT
ID
NAME
Um jetzt die vorhandenen Daten zu Transponieren und in die DB zu bekommen benötige ich Eure Hilfe.
Logisch habe ich mir das so vorgestellt:
Einen Neuen Standort lege ich manuell in einer Tabelle an die auch die Verbindungsdaten für die VPN,s enthält.
Beim abarbeiten des Scrips werden nacheinander die Standorte durchgegangen. Beim abarbeiten der Dateien ist also der Standort bereits bekannt. Jetzt kann in der kleinen STANDORT Tabelle geprüft werden ob der Standort schon existiert, wenn nicht anlegen und ID erzeugen, wenn ja nur ID entnehmen.
Der Name des Sensors ist im Namen der einzelnen Datei enthalten und muss extrahiert werden, Danach wieder in der SENSOR Tabelle nachsehen aber der Sensor mit dem Sandort schon existiert, wenn nicht dann anlegen und ID generieren wenn ja ID entnehmen.
Jetzt auf die Datei zugreifen, der Inhalt der Dateien besteht immer aus einer Anzahl n Zeilen mit zwei Spalten ZEIT und WERT .
Jetzt müsste einen neue CSV erzeugt werden in der die Zeilen um die zusätzlichen Informationen ergänzt werden und optimaler weise aus der Zeit und dem Datum ein UNIX Timstamp erzeugt wird. Und dann muss das ganze in die MESSWERT Tabelle.
Soweit die Theorie nur an der praktischen Umsetzung verzweifle ich.
Bei Fragen und Anregungen immer los.
Vielen Vielen dank.
Da er das Script nicht in diesem Post mag erzeuge ich einen Zweiten für das Script.
ich habe einen Ubuntu Server auf dem läuft MySQL und dort sind mehrere Datenbanken aktiv.
Dieser Server hat die Aufgabe sich automatisch via Open VPN auf verschieden andere Rechner zu verbinden von dort Kopiert er .txt Dateien , "Analysiert" diese und schreibt diese in eine Datenbank. Soweit funktioniert das auch, meistens jedenfalls. Das problem ist allerdings das die Daten so in der Datenbank landen das sie nicht wirklich weiterverarbeitet werden können.
Zur Erklärung:
Jede der .txt Dateien enthält Messwerte immer alle von einem Tag und einem Sensor. Aktuell werden in der Datenbank zu jedem Sensor eine Tabelle geführt. Um diese Daten vergleichend abzufragen ist ein enormer Aufwand nötig, zusätzlich wird auch noch für jedes Jahr eine zusätzliche Datenbank erzeugt.
Das würde ich gern ändern und zwar möchte Ich eine Datenbank welche nur drei Tabellen enthält:
MESSWERT
SENSOR
STANDORT
Diese sollen miteinander alle Abfragen möglich machen dazu enthalten die Tabellen folgende Felder:
MESSWERT:
ID
TIMESTAMP
WERT
SENSOR_ID
SENSOR:
ID
NAME
STANDORT_ID
STANDORT
ID
NAME
Um jetzt die vorhandenen Daten zu Transponieren und in die DB zu bekommen benötige ich Eure Hilfe.
Logisch habe ich mir das so vorgestellt:
Einen Neuen Standort lege ich manuell in einer Tabelle an die auch die Verbindungsdaten für die VPN,s enthält.
Beim abarbeiten des Scrips werden nacheinander die Standorte durchgegangen. Beim abarbeiten der Dateien ist also der Standort bereits bekannt. Jetzt kann in der kleinen STANDORT Tabelle geprüft werden ob der Standort schon existiert, wenn nicht anlegen und ID erzeugen, wenn ja nur ID entnehmen.
Der Name des Sensors ist im Namen der einzelnen Datei enthalten und muss extrahiert werden, Danach wieder in der SENSOR Tabelle nachsehen aber der Sensor mit dem Sandort schon existiert, wenn nicht dann anlegen und ID generieren wenn ja ID entnehmen.
Jetzt auf die Datei zugreifen, der Inhalt der Dateien besteht immer aus einer Anzahl n Zeilen mit zwei Spalten ZEIT und WERT .
Jetzt müsste einen neue CSV erzeugt werden in der die Zeilen um die zusätzlichen Informationen ergänzt werden und optimaler weise aus der Zeit und dem Datum ein UNIX Timstamp erzeugt wird. Und dann muss das ganze in die MESSWERT Tabelle.
Soweit die Theorie nur an der praktischen Umsetzung verzweifle ich.
Bei Fragen und Anregungen immer los.
Vielen Vielen dank.
Da er das Script nicht in diesem Post mag erzeuge ich einen Zweiten für das Script.