perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 26
Click for quality!




11.02.2012 / 17:55

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragSQLLOADER-Aufruf über Perl
Seitenanfang
Hallo allerseits,

ich habe folgendes Problem. In einem Perlskript lasse ich dynamisch ein SQLLOADER-Befehl zusammenstellen welcher dann Datensätze aus einer Datei in Oracle lädt. Das laden funktioniert soweit auch. Allerdings will er mir einfach keine LOG-Datei wegschreiben, obwohl ich dem SQLLOADER-Aufruf auf das Log-Parameter übergebe.

Seltsamerweise wird die Log-Datei geschrieben, wenn ich den SQLLOADER-Aufruf per Hand starte. Es ist der absolut gleiche Befehl, und trotzdem funktioniert es beim Aufruf über Perl einfach nicht ( SYSCALL ).

Woran kann das denn liegen? Funktioniert die Log-Funktion des SQLLAODER nicht wenn dieser über einen anderen Prozess gestartet wird? Hab jetzt schon einiges ausprobiert aber immer mit dem gleichen Ergebnis: setze ich den Befehl manuell ab, wird ein Log geschrieben, wird der Befehl über Perl abgesetz gibt es kein Log !

Weis jemand Rat?

Danke schonmal

Chris

Datum: 12.09.2005-08:45

Beitragre: SQLLOADER-Aufruf über Perl
Seitenanfang
Da ich nicht hellsehen kann, wäre etwas Code ganz hilfreich...

Datum: 12.09.2005-09:32

Beitragre: SQLLOADER-Aufruf über Perl
Seitenanfang
Der ensprechende System-Aufruf wird hier zusammengestellt:

$SYSCALL = "$SQLLOADER control=$SQL_CTL_FILE, "."log=$SQL_LOGFILE, "."userid=$USER, "."bad=$SQL_BADFILE, "."data=$SQL_DATAFILE";

der Daraus resultierende Aufruf sieht dann wie folgt aus:

C:\oracle\ora92\bin\SQLLDR.EXE control=D:\Prog\Import\load_ctl\ReceivablesPayables.ctl, log=D:\Log\Import\sql_log\Rece_35320050909122015.log, userid=****/****@****, bad=D:\Log\Import\sql_bad\Rece_35320050909122015.bad, data=D:\Data\Import\loadfiles\import.dat

Der Aufruf wird dann mit system($SYSCALL) abgeschicht. Der SQLLOADER wird gestartet und die Daten werden auch in die Datenbank geschrieben. Jedoch wird KEINE LOG-Datei erstellt.
Setze ich den Befehl selbst über die Eingabeaufforderung ab wird Sie erstellt.

Datum: 12.09.2005-09:40

-






-
-