Re: CSV-Daten zusammenfassen

From: Jürgen E. Fischer <fischer_at_linux-buechse.de>
Date: Wed, 3 Jun 2009 21:41:54 +0200

Moin Christian,

On Wed, Jun 03, 2009 at 15:41:24 +0200, Christian Weerts wrote:
> ich habe mal wieder eine schöne Aufgabe für unsere Knobelfreunde ;)

Schade schon zu spät - aber ich mach' trotzdem noch mit ;)

> Beispiel wie das Ergebnis aussehen sollte:
[...]
> "1002210";"Ersatzblatt, Motiv ABC, Verkehrsweiß RAL 9016, BR 2250x1920"
[...]

Auf die Anführungszeichen kommt's hoffentlich nicht an.

In Perl:

my %a;
<>;
while( <> ) {
        s/^"//; s/";"/;/; s/"\s*$//;
        my($a,$b) = split /;/;
        push @{ $a{$a} }, $b
}
print "$_;" . join(", ", @{ $a{$_} }) . "\n" foreach sort keys %a;

Und in unserer Lieblingsdatenbank:

create function concat(text,text) returns text as 'select $1||'', ''||$2' language 'SQL';
create aggregate strjoin(sfunc=concat,basetype=text,stype=text,initcond='');

create table lines(a varchar, b varchar);
copy lines from '/home/fischer/foo.csv' delimiters ';' csv header quote as '"';
select a,strjoin(b) from lines group by a order by a;

Auf die Reihenfolge der einzelnen Werte im zweiten Feld kann man sich bei
der PostgreSQL-Variante allerdings nicht verlassen.

Jürgen

-- 
"The day Microsoft makes something that doesn't suck is probably the day they
 start making vacuum cleaners."
  -- Ernst Jan Plugge
Received on Wed Jun 03 2009 - 21:41:54 CEST

This archive was generated by hypermail 2.2.0 : Wed Jun 03 2009 - 21:42:07 CEST