Re: CSV-Daten zusammenfassen

From: Christoph Sandhaus <mailings_at_draupadi.de>
Date: Thu, 4 Jun 2009 06:03:44 +0200

Moin!

Eine Frage und Anregung:
um wieviele Daten handelt es sich?
Alle Vorschläge arbeiten bislang im RAM, gefühlt werden aber die aktuellen
Rechner der Problem meistern?

Ansonsten ein echt primitiver Vorschlag, was in einem Shell Skript leicht zu
lösen sein sollte:

- CSV zeilenweise unsortiert auslesen und splitten (SP1, SP2)
- in Datei SP2 schreiben: echo SP1>>SP2
  (ohne CR/LF sollte SP2 in einer Zeile stehen)
- anschließend sortierte Dateien per loop in einer einzelnen zusammenfassen
  (ungefähr so: ls -1 | sort | while read F; do cat $F>>OUTFILE.txt; done)

LG.,
Christoph

Am Mittwoch, 3. Juni 2009 21:41:54 schrieb Jürgen E. Fischer:
> 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 Thu Jun 04 2009 - 06:03:44 CEST

This archive was generated by hypermail 2.2.0 : Thu Jun 04 2009 - 06:03:57 CEST