mysql Tabelle auslesen und Werte aufbereiten

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

mysql Tabelle auslesen und Werte aufbereiten

Beitrag von ThorstenS » 15.12.2011 08:16:04

Hi Leute,
ich habe eine mysql-Tabelle „kunden“, in der es die folgenden Felder gibt
· "Institution"
· "Anrede"
· "Benutzer"
· "Loginname"
· "Anzahl"

Das dumme ist, dass in "Anrede","Benutzer" und "Loginname" mehrere Werte stehen, die durch das Pipe Zeichen getrennt sind. Beispiel:

Code: Alles auswählen

mysql -uinstz -p -Dinstz-e "select Institution, Anrede, Benutzer, Loginname, Anzahl from kunden where Anzahl > 0 limit 3;" -E 

*************************** 1. row ***************************
    Institution: Firma 1
         Anrede: Frau|
           Name: Meyer|
      Loginname: hmeyer|
         Anzahl: 2
*************************** 2. row ***************************
    Institution: Firma 2
         Anrede: Herr|Frau|Herr
           Name: Heinze|Meyer|Müller
      Loginname: kheinze|hmeyer|
         Anzahl: 3
*************************** 3. row ***************************
    Institution: Firma 3
         Anrede: ||
           Name: ||
      Loginname: ||
         Anzahl: 3
Man sieht, dass nicht jedes Feld unbedingt korrekt ausgefüllt (=leer) ist.

Ich brauche jetzt den Output in der Form

Code: Alles auswählen

Institution1; Anrede1; Name1; Loginname1
Institution1; Anrede2; Name2; Loginname2
Institution2; Anrede1; Name1; Loginname1
…
Momentan habe ich ein Brett vorm Kopf und erstmal keine vernünftige Idee, wie ich möglichst einfach die mehrfach belegten Felder splitte und wieder vernünftig ausgebe. Ich bin über sed/awk/php Hilfen sehr dankbar.

Liffi
Beiträge: 2345
Registriert: 02.10.2004 01:33:05

Re: mysql Tabelle auslesen und Werte aufbereiten

Beitrag von Liffi » 15.12.2011 08:43:54

Vorweg: Ich würde es vermutlich in Python oder Perl machen, sicher gehen meine Idee aber auch in anderen Sprachen.

Pseudocode:

Code: Alles auswählen

for line in data:
    firma, anreden, names, login_names = magic_trick(line) # passende regex ;-)
    if length(names) != length(login_names):
        auffuellen(login_names); # oder sollen die leeren Logins nicht angeschrieben werden?
    for combination in permutation(firma, [anreden, names, login_names]):
        print combination
Wie gesagt, alles nicht sehr genau, aber so ähnlich sollte sich das durchführen lassen.

Pyhon Itertools lassen sich vermutlich dafür gut benutzen.

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: mysql Tabelle auslesen und Werte aufbereiten

Beitrag von ThorstenS » 15.12.2011 10:43:04

Danke dir für die Mühe und Anregung. Aber ich bin zum Schluß gekommen, diesen einmaligen Aufwand wird nen Azubi abbekommen.
Er kann mit Hilfe von LibreOffice Calc jede Institution importieren und die entspr. Zellen transponieren. Damit ist der Drops ist gelutscht.
Für alles andere habe ich leider keine Zeit.

Antworten