staging.inyokaproject.org

Inhalte automatisiert aus sv-Datei extrahieren, anreichern, nach Datenbank schreiben

Status: Ungelöst | Ubuntu-Version: Ubuntu 16.10 (Yakkety Yak)
Antworten |

drebes

Anmeldungsdatum:
26. Januar 2017

Beiträge: 3

Hallo in die Runde.

Ich möchte automatisiert einige Zustände meines Webservers fortlaufend ein eine Datenbank schreiben. Aus der Paketverwaltung habe ich nun die Möglichkeit eine cvs-datei zu Bekommen.

Die habe ich nun der Kopfzeile beraubt, Anführungszeichen entfernt, und das Semikolon durch ein Komma ersetzt. Nun geht es aber weiter. Ich möchte alle Werte ausser der ersten, der zweiten und der vierten Spalte aus der csv-datei löschen. Wie mache ich das am besten ?

Thx Mathias

Es kommen garantiert noch viele weitere Fragen ...

Thomas_Do Team-Icon

Moderator
Avatar von Thomas_Do

Anmeldungsdatum:
24. November 2009

Beiträge: 8808

Poste einmal eine Beispieldatei und die Art der gewünschten Ausgabe.

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Hi Matthias,

zuerst mal herzlich willkommen hier auf dem Forum !

Deine Frage sieht mir so verdächtig nach etwas für awk aus, denn das trennt von Hause aus automatisch nach "Spalten".
Allerdings nur ganz primitiv: in den Text eingeschlossene Spaltentrenner und dergleichen kriegt es nicht auseinander, in dem Fall bräuchtest Du einen ausgewachsenen csv-Parser.

Wie Thomas_Do schon sagt: um dazu etwas sagen zu können, bräuchten wir eine Beispieldatei von Dir.

Das Zeug in die Datenbank zu kriegen, das ist dann der 2. Schritt.
Wäre bei awk aber auch nicht grundsätzlich ein Problem, denn das kann "in der Backentasche" auch jedwede Shell-Befehle ausführen, also auch die nötigen DB-Befehle (der Shell).

LG,

track

drebes

(Themenstarter)

Anmeldungsdatum:
26. Januar 2017

Beiträge: 3

OK ich hole mal etwas weiter aus:

Was am Ende dabei heraus kommen soll ist eine Datenbanktabelle, aus der ich später für eine Webseite entsprechende Informationen auslesen kann.

Jetzt habe ich eine 'Steuerdatei' die Servernamen,Appname, Version enthält. (Da bin ich noch recht frei in der Gestaltung, denn die schreibe ich selbst). Also bspw:

licht.frankfurt.de, MySQL, 7.2.12
schatten.frankfurt.de,MySQL,7.2.19

Die gilt es auszuwerten um entsprechende URLs zu erzeugen (Hostname) und auf die richtige App zu schauen (MySQL) und deren Version dann in die Datenbank einzutragen.

Nach Aufruf der URL und ein wenig Kosmetik bekomme ich ein Ergebnis zurück, das in etwa so aussieht:

MySQL-Server,7.2.12,Metadaten,MySQL-Server ist ein Datenbankserver,Metadaten,Metadaten,Metadaten
MySQL-Client,7.2.12,Metadaten,MySQL-Clienet ist ein Datenbankclient,Metadaten,Metadaten,Metadaten

Das will ich nun auf die Spalten 1,2,und 4 reduzieren - herauskommen soll also

MySQL-Server,7.2.12,MySQL-Server ist ein Datenbankserver

Danach anreichern um den FQDN des Servers

licht.frankfurt.de,MySQL-Server,7.2.12,MySQL-Server ist ein Datenbankserver

und das ganze dann in eine Datenbank schreiben

1
mysql<{whatever}

Ich hoffe ich konnte das nun verständlicher machen ? Thx Mathias

Bearbeitet von rklm:

Codeblöcke hinzugefügt. Bitte beachte Forum/Syntax - ansonsten wird so ein Beitrag ziemlich unleserlich.

Mokkujin

Anmeldungsdatum:
2. Mai 2008

Beiträge: 389

Mit Miller (http://johnkerl.org/miller/doc/) bearbeiten dann in die DB schrieben

drebes

(Themenstarter)

Anmeldungsdatum:
26. Januar 2017

Beiträge: 3

OK - das Löschen und die Separation der Inhalte der einzelnen Zeilen ist mit nun mit awk gelungen.

1
awk -F "," '{print$1","$2","$5}' files.4.csv > files.5.csv

Weiter gehts 😉

Bearbeitet von rklm:

Codeblock

Antworten |