Zum Inhalt springen

SELECT ausgabe formatieren (ShellSkript)


SaugetierchenII

Empfohlene Beiträge

Hi,

ich möchte mittels eines SHELL-Skripts einen mysql Datensatz auslesen und den erhaltenen Wert weiterverarbeiten, das problem ist die Ausgabeformatierung von SELECT..

Beispiel:

SELECT DISTINCT art FROM pet

ergibt:

+---------+

| art |

+---------+

| Vogel |

| Katze |

| Hund |

| Hamster |

| Schlange|

+---------+

das kann ich aber nicht weiterverarbeiten

folgender massen stelle ich mir das vor:

#!/bin/bash

$ergebnis=(SELECT * FROM name where art ='Vogel')

die Variable $ergebnis solte dann einen string enthalten......

geht das überhaupt und wenn ja wie kann ich das bewerkstellen?

wäre echt dankbar für eure hilfe!!!!!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Originally posted by SaugetierchenII

folgender massen stelle ich mir das vor:

#!/bin/bash

$ergebnis=(SELECT * FROM name where art ='Vogel')

die Variable $ergebnis solte dann einen string enthalten......

geht das überhaupt und wenn ja wie kann ich das bewerkstellen?

Wie wäre es mit der Option e von mysql. (siehe man mysql)

Außerdem halte ich Deinen Ansatz für fraglich, da Du ein mehrzeiliges Ergebnis in einer Variablen speichern willst. Ich habe schon einige Bashskripte geschrieben, aber soetwas ist mir bislang nicht über den Weg gelaufen (mehrzeiliger Wert).

Ansonsten würde ich Dir eher vorschlagen, daß ganze mit einem Perlskript zu lösen, da bei Perl die besseren/einfacheren Stringverarbeitungsfunktionen hat.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nabend so spät noch ! :)

Also die Empfehlung für Perl ist mit Sicherheit nicht schlecht. Perl bietet einiges an Funktionen, gerade wenn es darum geht, Teile aus Zeichenketten, oder Teile aus Dateien etc. zu extrahieren oder zu isolieren.

Wie mein Vorgänger seh ich auch das Problem der Übergabe der Werte aus der Tabelle mit dem Select. Da wüsste ich auf Anhieb so spät heute abend auch keine Lösung wissen. :(

Leider bietet ja mySQL meines Wissens nach noch nicht die Möglichkeit des UNLOAD INTO-SQL-Befehls, wo ich ja mittels des Befehls verbunden mit einer Select-Abfrage eine Datei erstellen kann, die ich dann ja mit beliebigen Programmiersprachen wie eine ganz normale ASCII-Datei behandeln kann.

Weiß auch nicht, ob das bei mySQL geplant ist, sowas in der Art zu implementieren oder ob das überhaupt Standard-SQL ist ?!

Flori

Link zu diesem Kommentar
Auf anderen Seiten teilen

Originally posted by Flori

Leider bietet ja mySQL meines Wissens nach noch nicht die Möglichkeit des UNLOAD INTO-SQL-Befehls, wo ich ja mittels des Befehls verbunden mit einer Select-Abfrage eine Datei erstellen kann, die ich dann ja mit beliebigen Programmiersprachen wie eine ganz normale ASCII-Datei behandeln kann.

Weiß auch nicht, ob das bei mySQL geplant ist, sowas in der Art zu implementieren oder ob das überhaupt Standard-SQL ist ?!

Wie wäre es mit der Anwendung der Ausgabeumleitung?

mysql -e SQL-Statement >ausgabe.txt

Die Datei ausgabe.txt kann man dann sehr wohl weiterverarbeiten.

viele grße

readonly

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo readonly !

Wer lesen kann, ist natürlich klar im Vorteil, muß ich mir da selbst gestehen... ;)

Hast natürlich recht :

mysql -u <user> -p -e "select * from db1.tabelle" > ergebnis.txt

Damit kriegt man ja das, was man auch anderswo mit dem UNLOAD erreicht ! *vor die Stirn schlag* :D

Aber jetzt hab ich in der mysql-Doku direkt mal nachgeblättert und in dem Zusammenhang rausgefunden, daß es sogar einen Befehl "SELECT .... INTO OUTFILE <name> gibt, der das Komplement von "LOAD DATA INFILE" darstellt. Damit kann ich dann sogar bestimmen wie meine Werte-Trenner in der Datei aussehen. Letztlich sieht das dann so aus :

mysql -u <user> -p -e "SELECT * FROM db1.tabelle INTO OUTFILE '<name>' FIELDS TERMINATED BY '#' LINES TERMINATED BY '\n'"

Damit schreibt man die Werte aus der Select-Abfrage in die Datei <name>, wobei die jeweiligen Spalten durch "#" getrennt werden. Das Ende eines Datensatzes wird mit dem Zeichen für Zeilenumbruch "\n" abgeschlossen.

So könnte man dann mit dem Shell-Skript auf der Datei "rumarbeiten". Unter Unix/Linux gibts da ja Möglichkeiten mit grep, awk, cat, sed etc...

(Allerdings hat dieses komische Notepad -notepad.exe - unter Windows die Angewohnheit den Zeilenumbruch "\n" anstatt mit nem echten Zeilenwechsel, mit nem "schwarzen Kästchen" anzuzeigen. Im DOS-Editor ists ne echte, neue Zeile. Fragt sich wie man sowas mit String-Operationen abfängt, da im Notepad der Hex-Wert auch aus zwei Werten besteht. Aber das gehört wohl in ein anderes Forum - vielleicht da mal posten)

Auf jeden Fall gibts wohl doch einige Mittel und Wege, die Abfrageergebnisse in einer Datei zu sichern und auf die Datei mit Shell-Skript oder anderer Sprache zuzugreifen. Vielleicht sogar besser, als immer wieder auf temporäre Abfragetabellen zuzugreifen....

Flori

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...