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

UtilFaqSubForm edit

Titel CSV-Dateien als Datenbank behandeln
Autor ReneeBaecker
Bereich FaqCSV
Tags CSV, Datenbank, DBI
Topic revision: r1 - 2007-06-27 - 11:05:03 - ReneeBaecker
 
Bitte die NutzungsBedingungen beachten.
Bei Vorschlägen, Anfragen oder Problemen mit dem PerlCommunityWiki bitten wir um WebBottomBarExample">Rückmeldung.