Perl - DBI :: CSV сортировка - PullRequest
       26

Perl - DBI :: CSV сортировка

3 голосов
/ 24 августа 2011

У меня есть текстовый файл с именем x.txt со следующими данными:

emailid,hits
aa,100
bb,200
cc,300
dd,400
ee,500
aa,400

и мой код Perl

use DBI;
$dbh = DBI->connect ("dbi:CSV:", undef, undef, { f_dir => ".",csv_sep_char     => "," });

my $query = "SELECT emailid,sum(hits) tothits FROM x.txt  group by emailid order by tothits desc";
my $sth   = $dbh->prepare ($query);
$sth->execute ();
while (my $row = $sth->fetchrow_hashref) {
    print $row->{emailid},"--",$row->{tothits},"\n";

    }
$sth->finish ();

, который возвращает

cc--300
bb--200
dd--400
aa--500
ee--700

Что здесь не так?

1 Ответ

1 голос
/ 25 августа 2011

Ваш SQL выглядит нормально. Причина, по которой такой сортировки не происходит, объясняется ограничениями в DBD :: CSV .

Я пытался посмотреть, будет ли он работать с DBD :: AnyData, но он не распознает tothits и умирает.

Похоже, вам нужно сделать обходной путь, например fetchall затем sort.

...