CSV-Dateien als Datenbank behandeln
Inhalt:
Mit Datenbanken können die meisten umgehen und kennen auch das Modul DBI. CSV-Dateien selbst zu parsen ist aufwändig und fehleranfällig. Deshalb sollte man anderen Parsern vertrauen. Wenn man aber nur bestimmte Informationen aus CSV-Dateien braucht, ist es ganz praktisch, diese Dateien als Datenbank zu behandeln. Dazu gibt es das Modul DBD::CSV, das es ermöglicht, die CSV-Datei über die API von DBI anzusprechen.
Ein Beispiel
Die Datei "konferenzen"
KonfID;KonfName;Monat
1;Perl-Workshop;Februar
2;YAPC::Europe;August
3;FrOSCon;August
4;"Linux-Tage Essen";November
Das Skript
#!/usr/bin/perl
use strict;
use warnings;
use DBI;
use Data::Dumper;
#Ordner, in dem die CSV-Datei liegt
my $dir = '.';
#Trennzeichen in der Datei (hier: das Semikolon)
my $sep = ';';
#Verwende DBI mit DBD::CSV damit mit den
#CSV-Dateien gearbeitet werden kann
my $dsn = "DBI:CSV:csv_sep_char=\\".$sep;
my $dbh = DBI->connect( $dsn,"","" ) or die $DBI::errstr;
$dbh->{'RaiseError'} = 1;
#SQL-Statement
my $select = qq~SELECT KonfName
FROM konferenzen
WHERE Monat = ?~;
my $gesuchter_monat = 'August';
# Abfrage ausfuehren
my $sth = $dbh->prepare( $select ) or die $dbh->errstr;
$sth->execute( $gesuchter_monat ) or die $dbh->errstr;
# Ausgabe Ergebnis
print "Konferenzen im $gesuchter_monat:\n";
while( my ($conf) = $sth->fetchrow_array ){
print "\t",$conf,"\n";
}
Ergänzungen, Kommentare
Kommentare werden am besten in folgender Form vorgenommen, damit
sie im Inhaltsverzeichnis angezeigt werden (natürlich ohne das <verbatim>):
---+++ Main.??? - 14 Jul 2003 - Betreff