CGI: Textfile wie Datenbank auslesen?

Hallo,

ich habe mit VBS ein paar ASP-Seiten programmiert, die auf Basis einer Access-Datenbank HTML-Seiten generieren.

Nun sollen die Seiten aber auf einen UNIX-Server kommen, der natürlich kein ASP unterstützt (auch kein PHP), sondern nur CGI. Außerdem gibt es natürlich keine ODBC-Schnittstelle, unter der ich die Datenbank ansprechen könnte.

Meine Überlegung ist nun, die Datenbank-Tabellen in Text-Dateien zu exportieren und darauf mit Perl zuzugreifen. Am besten wäre hier sozusagen ein SQL-Emulator, der es mir erlauben würde, den ASP-Code von der Struktur her einschließlich SQL-Code zu übernehmen. Die Konvertierung des simplen „Drumherums“ in Perl wäre nicht so wild.

So einen Emulator für die verwendete einfache SQL-Syntax unter VBS zu schreiben wäre kein größeres Problem. Damit könnte ich dann ohne ODBC undso einfach auf die Text-Datei zugreifen. Aber das wäre recht aufwendig. Außerdem brauche ich es in Perl. Und hier kommt die Frage :

Gibt es etwas derartiges vorgefertigt? Muß ja nicht SQL-like sein. Ich will ja bloß eine Textdatei mit TAB-getrennten Werten strukturiert auslesen, möglichst unter Verwendung von Feldnamen. In einer Perl-Doku habe ich was von Datenbanken undso gelesen, aber das bezog sich offenbar immer auf „richtige“ Datenbanken, nicht auf Files. Die Read-Funktion, mit der man offenbar nur eine bestimmte Anzahl von Zeichen lesen kann, ist da wohl nur eine Notlösung. Da müßte man ja alles hardcoremäßig selbst programmieren.

Danke für hilfreiche Hinweise schon jetzt und viele Grüße vom Rhein,
Kristian

Hi Kristian,

warum nutzt Du nicht mySQL (Stichwort: LAMP), das kann man auch über das Netz Administrieren - und für WinDOOF^H^Hws (und andere Systeme) gibt es eine ODBC-Schnittstelle dafür: myODBC (http://www.mysql.de/downloads/api-myodbc-3.51.html).
Zum Administrieren gibt es ebenfalls mehr als genug Tools.

CU (M)ike

P.S.: Ansonsten kann man z.B. jede Text-Zeile einlesen (foreach), an einem Tabulator „splitten“ und so in eine Tabelle verfrachten (Schleife bis Dateiende).

warum nutzt Du nicht mySQL (Stichwort: LAMP), das kann man
auch über das Netz Administrieren - und für WinDOOF^H^Hws (und
andere Systeme) gibt es eine ODBC-Schnittstelle dafür: myODBC
(http://www.mysql.de/downloads/api-myodbc-3.51.html).
Zum Administrieren gibt es ebenfalls mehr als genug Tools.

Der Server verfügt über nichts dergleichen, und ich kann da leider auch nix aufspielen oderso. Company Network. Muß mich schon mit dem Perl zufriedengeben :wink:

P.S.: Ansonsten kann man z.B. jede Text-Zeile einlesen
(foreach), an einem Tabulator „splitten“ und so in eine
Tabelle verfrachten (Schleife bis Dateiende).

Darauf wird´s wohl hinauslaufen. Na dann mal los …

Danke für die Antwort!

Kristian

PS: Die ASP-Geschichte läuft über ODBC unter Windows. Kein Problem :wink:

Hi Kristian,
wenn du dir die Sache möglichst einfach machen willst, solltest du Berkeley-DBM Files benutzen (siehe z.B. im Perl Cookbook, Kap. 14). Du kannst dann mit normalen Hashes arbeiten (Key => Value…, entspricht dann etwa relationalen Tabellen, sofern du dich auf einen eindeutigen Key einigen kannst); diese werden dann völlig transparent in Dateien (flat Files) vorgehalten.

in etwa funktioniert die Geschichte so (ungetestet, nur sinngemaess):

use DB\_File;

my %tabelle1;
tie %tabelle1, 'DB\_File', 'meinDataFile.dat';

# jetzt kann man mit dem Hash %tabelle1 ganz normal
# arbeiten...

$tabelle1{"key1"} = "Herbert Müller";

# ... usw. usw.

untie %tabelle1; # und schon steht das ganze in einer Datei
 # (und kann später wieder benutzt werden)

Gruß
bernhard

Hi Kristian,

Der Server verfügt über nichts dergleichen, und ich kann da
leider auch nix aufspielen oderso. Company Network. Muß mich
schon mit dem Perl zufriedengeben :wink:

hätt’ ja sein können, wäre eben die elegamtere Methode gewesen…

Schau Dir mal „TELSAFE.CGI“ aus einem c’t-Artikel an
(ftp://ftp.heise.de/pub/ct/listings/ct9806.zip).
Es geht dabei zwar um ein etwas anderes Thema, aber als Ansatz wie eine Textdatei-Datenbank geöffnet und in eine HTML-Tabelle umgewandelt wird, ist es gut geeignet. (vor allem benötigt man keine zusätzlichen Module)

CU (M)ike

Hi Kristian,
wenn du dir die Sache möglichst einfach machen willst,
solltest du Berkeley-DBM Files benutzen (siehe z.B. im Perl
Cookbook, Kap. 14). Du kannst dann mit normalen Hashes
arbeiten (Key => Value…, entspricht dann etwa
relationalen Tabellen, sofern du dich auf einen eindeutigen
Key einigen kannst); diese werden dann völlig transparent in
Dateien (flat Files) vorgehalten.

Moin Bernhard,

danke für den Tipp, doch wie komme ich von Access zu Berkeley-DBM? Einen Export-Filter scheint´s zumindest standardmäßig nicht zu geben, und eine „Bastel“-Anleitung mit Infos zur Dateistruktur habe ich nicht finden können.

Kristian