ubuntuusers.de

Bash Script mit MySQL und Berechnung

Status: Ungelöst | Ubuntu-Version: Ubuntu 12.04 (Precise Pangolin)
Antworten |

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

rklm schrieb:

Je länger ich über das Projekt nachdenke, desto mehr glaube ich, dass man das nicht in der Shell sondern mit einer richtigen Programmiersprache (Python, Ruby...) tun sollte...

Iirc hatten wir dem OP das schon zu Beginn geraten ☺

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13213

Lysander schrieb:

rklm schrieb:

Je länger ich über das Projekt nachdenke, desto mehr glaube ich, dass man das nicht in der Shell sondern mit einer richtigen Programmiersprache (Python, Ruby...) tun sollte...

Iirc hatten wir dem OP das schon zu Beginn geraten ☺

Ich glaube nicht - jedenfalls habe ich gerade beim Durchschauen kein Posting der Art gefunden. 😬

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

Tatsächlich! Wie nachlässig von uns... ist doch sonst nicht unsere Art, das nicht zu empfehlen 😈

Cracymike

(Themenstarter)

Anmeldungsdatum:
18. August 2014

Beiträge: 41

Doch doch das wurde am Anfang schon mal vorgeschlagen, aktuell steht mir der Sinn allerdings nicht danach mich mit noch einer Sprache zu beschäftigen.

Der Einwand die Sache umgekehrt anzugehen ist natürlich absolut richtig werde das entsprechend Umsetzen.

Aber noch zu meiner Frage, reicht es diese Zeile einfach im Script zu haben um den Wert in die Datenbank zu bekommen? Oder muß dort noch was dazu.

1
2
SQL="INSERT INTO \`STANDORT\` (NAME) VALUES (`$MACHINE`)"
	  `mysql --skip-column-names dwh_bga -uroot -p$SQLPWD -e "$SQL"`

Gruß Mike

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13213

Cracymike schrieb:

Der Einwand die Sache umgekehrt anzugehen ist natürlich absolut richtig werde das entsprechend Umsetzen.

Welche Sache und wie umgekehrt?

Aber noch zu meiner Frage, reicht es diese Zeile einfach im Script zu haben um den Wert in die Datenbank zu bekommen? Oder muß dort noch was dazu.

1
2
SQL="INSERT INTO \`STANDORT\` (NAME) VALUES (`$MACHINE`)"
	  `mysql --skip-column-names dwh_bga -uroot -p$SQLPWD -e "$SQL"`

Es ist nicht klar, warum, Du mysql in die Process Substitution packst. Willst Du die Ausgabe weiter verarbeiten? Falls, nicht, brauchst Du die Backticks nicht.

Außerdem benutzt Du m.E. die falschen Quotes in Deinem SQL-Statement, aber es sieht so aus, dass MySQL da eine Sonderlocke hat. Normalerweise würde ich doppelte Anführungsstriche für Datenbankobjekte und einfache für Zeichenkettenkonstanten verwenden. Zumindest ist das, was ich vom SQL Standard in Erinnerung habe.

Ciao

robert

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13213

rklm schrieb:

Außerdem benutzt Du m.E. die falschen Quotes in Deinem SQL-Statement, aber es sieht so aus, dass MySQL da eine Sonderlocke hat. Normalerweise würde ich doppelte Anführungsstriche für Datenbankobjekte und einfache für Zeichenkettenkonstanten verwenden. Zumindest ist das, was ich vom SQL Standard in Erinnerung habe.

Habe noch etwas gefunden. Wenn Du Dich gleich an den Standard hältst, dann fällt es Dir später leichter, auf eine andere DB zu wechseln.

Cracymike

(Themenstarter)

Anmeldungsdatum:
18. August 2014

Beiträge: 41

Hallo Zusammen,

Das meiste habe ich mittlerweile hinbekommen jetzt nervt mich noch ein Problem und zwar folgendes.

Ich verarbeite ja .txt Dateien von unterschiedlichen Rechnern diese Dateien sehen Grundlegend sehr gleich aus.

Inhalt Beispiel: Datum, Uhrzeit, Wert

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
02.11.2012 21:50:25    0,00000
02.11.2012 21:50:25    0,00000
02.11.2012 21:53:50    12,24500
02.11.2012 22:20:17    12,24500
02.11.2012 22:20:38    12,23167
02.11.2012 22:30:40    12,23167
02.11.2012 22:31:01    12,22833
02.11.2012 22:46:24    12,22833
02.11.2012 22:48:37    12,22667
02.11.2012 22:54:27    20,76667

Aktuell wird in meinem Script mit diesem Befehl:

1
2
3
4
5
6
# Messdaten in MySQL-CSV-Format bringen
# (TAB einfügen als Feldtrenner)
# (Zeitstempel in DATETIME-Fomat wandeln)
# (Dateinamen in Tabellennamen ändern)
##########################################
            cat "$FULLFILE" | sed -e "s%\([0-9]\+\)[.:]\([0-9]\+\)[.:]\([0-9]\+\)[ \t]\+\([0-9:.]\+\)[\t]\+\([0-9]*\)[,.]\([0-9]*\)%\3-\2-\1 \4    \5.\6%" > $TMPDIR/$MACHINE-$SENSOR.mysqlimport

Offensichtlich eine CSV Erzeugt nur habe ich keine Ahnung was hier genau vorgeht, könnt ihr mir eventuell erklären was genau Passiert?

Gruß und Danke Mike

Antworten |