Thread DBI und MS-Access Verbesserungsmöglichkeiten (4 answers)
Opened by AndreasM at 2006-07-10 16:09

AndreasM
 2006-07-10 16:09
#34503 #34503
User since
2005-10-08
31 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo zusammen!

Ich habe hier ein Skriptfragment, das mir Probleme macht.
Prinzipiell geht es um folgendes: Ich bekomme regelmässig eine Accessdatenbank von einem Kunden.
Aus dieser Accessdatenbank wird eine Abfrage gelesen und exportiert. Die Weiterverarbeitung der Daten erfolgt immer gleich.
Diesen Job im ganzen möchte ich automatisieren.
Der Zugriff auf die Accessdatenbank gelingt mir, Export klappt auch. (Nebenbei: 140 000 Datensätze in 10-15 Minuten. Ist auch etwas von Netztraffic abhängig, denn ich arbeite nicht lokal. Ist das performacetechnisch ok, oder gibt es Tuningmöglichkeiten??)

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
use warnings;
use strict;
use DBI;

# 1. Mit der Access-Datenbank verbinden
my $dbh = DBI->connect('dbi:ODBC:driver=microsoft access driver (*.mdb);dbq=C:\\Muster.mdb');

#2. SQL-Statment vorbereiten und ausführen
my $sqlstatement="SELECT verschiedene_Felder FROM Ansprechpartner INNER JOIN PersStammdaten ON Ansprechpartner.StSchlNr = PersStammdaten.SchlNr";
my $sth = $dbh->prepare($sqlstatement);
$sth->execute ||
die "Konnte SQL Abfrage nicht ausführen ... vielleicht ungültig?";


#3. Ergebnis ausgeben
my @row_ary = $sth->fetchrow_array;
open AUSGABE, ">Muster.txt";
print AUSGABE "verschiedene_Felder\n";
while ( @row_ary = $sth->fetchrow_array ) {
print AUSGABE join(";",@row_ary),"\n";
}
close AUSGABE;
$dbh->disconnect;


Was mich noch etwas stört: Ich würde gerne die Titelzeile mit ausgeben.
Im Moment behelfe ich mir, in dem ich einfach mit "print AUSGABE "verschiedene_Felder\n";
alle im SQL-Staement ausgegebenen Felder ausdrucke. Das funktioniert, aber wenn ich mal das SQL-Statement ändere muss ich diese Änderung zweimal vornehmen, nämlich einmal im SQL-Statement an sich und dann in der besagten Zeile "print AUSGABE "verschiedene_Felder\n";
Das möchte ich vermeiden. Gibt es eine Möglichkeit die Abfrage so abzusetzen, dass eine Titelzeile quasi mit ausgegeben wird?

Grüße
AndreasM\n\n

<!--EDIT|AndreasM|1152533414-->

View full thread DBI und MS-Access Verbesserungsmöglichkeiten