Hallo nochmal,
ich stelle meine Frage von eben noch einmal etwas anders:
Gibt es irgendwo ein Perl-Modul, das es mir erlaubt, eine Textdatei mit Tabulator-getrennten Werten in SQL-Abfrage-Manier auszulesen? Es können auch andere Trennzeichen sein, aber es muß simpel und möglichst leicht mit Access2000 zu erzeugen sein.
Hintergrund: Ich habe z.B. die folgende Textdatei „Buecher.tab“;
Titel Thema Verfügbar Medium
Titel 1 SQL Ja CD
Titel 2 SQL Nein Buch
Titel 3 SQL Nein CD
Titel 4 Perl Ja DVD
Mit SQL würde ich nun folgende Abfrage machen:
SELECT Titel, Verfügbar FROM Buecher WHERE Thema='SQL' AND Medium'Buch';
Da ich aber auf dem CGI-Server keinerlei Dantenbank-Engines und auch kein ODBC oderso habe, muß diese Abfrage-Logik von Perl selbst kommen. Um das zu erreichen, habe ich mir ein kleines Modul geschrieben, mit dem ich immerhin beliebig viele AND-Verknüpfungen von „=“- oder „“-Bedingungen in der WHERE-Klauses realisiert bekomme, das ich dann wie folgt nutzen kann:
#!E:\Perl\bin\perl.exe
use strict;
my $Filename = "Buecher.tab";
my @Records;
my $RecordCount;
my @SQLResults;
my $i;
my $j;
my $k;
#---------------------------------------------------------
open(FILE, ";
close(FILE);
$RecordCount = @Records; # includes column heads
#---------------------------------------------------------
for($i = 0; $i Buch";
my @sc = split(",", $SELECT);
my $sc = @sc; # number of columns provided in @SQLResults
@SQLResults = ExecSQL($SELECT, \@Records, $WHERE);
$i = 0;
foreach(@SQLResults) { $i++; } # number of matching records
for ($j=1; $j
Das Blöde ist nur: Wenn ich noch weitere Vergleichsoperatoren, OR-Verknüpfungen oder gar mit Klammern verschachtelte Bedingungen implementieren wollte, würde ich vor einem Haufen Arbeit stehen, von einer möglicherweise nicht gerade optimalen Performance des Ergebnisses ganz zu schweigen.
Ich kann mir nicht vorstellen, daß bei den tausenden verfügbaren Perl-Modulen keins dabei ist, das sich dieser Aufgabe stellt. Nur konnte ich bislang leider nichts dergleichen finden.
PS: Die Variante mit DB\_FILE undso habe ich noch nicht so ganz durchschaut, aber es sieht nicht so aus, als würde das diese Abfrage-Logik bereitstellen. Oder täusche ich mich da?
Danke,
Kristian