#!c:/perl/bin/perl.exe use strict; # Module: use DBI; # Zugriff auf die Oracle-DB use DBD::Oracle; # Zugriff auf die Oracle-DB use Net::FTP; # FTP-Up- & Download fuer Online-Server # DB-connect Oracle my $dbh = db_connect_oracle(); if ($dbh) { print "Oracle-Datenbank-Connect erfolgt\n"; # SQL-Insert aus Oracle-DB bauen fuer Online-DB read_oradb($dbh); } sub db_connect_oracle { [...] } sub read_oradb { my $localdir = "C:/XXX/download/"; my $t_spieler = "spieler"; (my $sql4 = $dbh->prepare(qq{SELECT * FROM $t_spieler})) || print "Database prepare statement not made: $DBI::errstr"; (my $result4 = $sql4->execute()) || print "Database execute not made: $DBI::errstr"; open(DATA_SP, ">".$localdir.'spieler.sql') || print "kann file nicht oeffnen\n"; print DATA_SP "DELETE FROM $t_spieler;\n"; while (my @spieler = $sql4->fetchrow_array) { for (my $i = 0; $i < 3; $i++) { # leerzeichen am Anfang und Ende entfernen chomp($spieler[$i]); $spieler[$i] =~ s/^\s+//; $spieler[$i] =~ s/\s+$//; # zeilenumbrueche aus Feldern entfernen $spieler[$i] =~ y/\cJ\cM//d; # leere Werte durch NULL ersetzen if ($spieler[$i] eq '' || $spieler[$i] eq 'NULL') { $spieler[$i] = 'NULL'; } # Falls Zahlen mit Nachkommastellen auftreten, Komma durch Punkt ersetzen my $muster = '^(\d+)\,(\d+)$'; if ($spieler[$i] =~ /$muster/) {   ; $spieler[$i] = $1.'.'.$2; } } # schreibe Insert-Zeile in die SQL-Datei print DATA_SP "INSERT INTO ".$t_spieler." (SPNR, KDNR, BEMERKUNGEN) VALUES (".$spieler[0].",".$spieler[1].",'".$spieler[2]."');\n"; } $sql4->finish(); close(DATA_SP); my $check_sp = ftp_transfer("spieler.sql"); # die anderen 4 Dateien spar ich mir jetzt, Code ist # ungefähr identisch, und o.g. Fehler treten auch fuer # diese Datei auf. sub ftp_transfer { my $quelle = $_[0]; my $ziel = $quelle; my $server="XXX.XXX.XXX.XX"; # Servername FTP my $username="XXX"; # Benutzername auf dem FTP-Server my $password="XXX"; # Passwort für den Benutzer my $localdir = "C:/XXX/download/"; my $serverdir_up = "/usr/home/XXX/XXX/upload/"; my $serverdir_down = "/usr/home/XXX/XXX/download/"; my $ftp=Net::FTP->new($server, Debug => 1, Passive => 1) || print "Keine Verbindung mit $server - Fehler: ".$!." \n"; $ftp->login($username, $password) || print "Fehler beim einloggen - Fehler: ".$!." \n"; # Ins lokale Verzeichnis wechseln chdir($localdir) || print "kann nicht ins Verzeichnis wechseln!\n"; # laedt die SQL-Datei herauf $ftp->cwd("XXX"); $ftp->cwd("upload"); $ftp->ascii; $ftp->put($localdir.$quelle, $ziel) || print "Fehler beim upload von ".$localdir.$quelle." auf ". $server." - ".$serverdir_up." - Fehler: ".$!." \n"; $ftp->quit(); if (! $!) { return "true"; } else { return "false"; } }