2017-06-28 4 views
2

Ich habe dieses Szenario:Dateiname als Parameter in SQL LOADER

In meinem Arbeitsverzeichnis Ich habe einen sh Skript, ctl Datei und Eingabedatei, wenn ich versuche, den Shell-Skript zu starten mit dem Eingangsparameter (filename.txt):

mysh.sh filename.txt 

erhalte ich diesen Fehler:

SQL*Loader-500: Unable to open file (filename.txt) 
SQL*Loader-553: file not found 
SQL*Loader-509: System error: No such file or directory 
SQL*Loader-2026: the load was aborted because SQL Loader cannot continue. 

Hinweis: All meine Objekte (Dateien und Verzeichnisse haben 777 Berechtigungen)

Wenn ich den Shell-Skript mit dem vollständigen Pfad zu der Eingabedatei zu starten, funktioniert alles einwandfrei

mysh.sh fullpathtofile/filename.txt 

Meine Frage ist, : Warum funktioniert es nicht, wenn ich nur den Dateinamen als Eingabeparameter einfüge?

Teil conent meiner sh-Datei:

!/usr/bin/sh 
sqlldr $USER/$PASSWD control=pathtofile data=$1 log=pathtofile bad=pathtofile 
+0

[Bearbeiten] Sie Ihre Frage und fügen Sie den Code in 'mysh.sh' –

+0

Ich tat richtig, wie ich oben sagte, es funktioniert gut, wenn ich den vollständigen Pfad der Eingabedatei einfügen. Danke im Voraus. – Frank

Antwort

0

als mysh.sh Shell-Skript und Eingabedatei filename.txt in derselben Stelle platziert werden, ist Shell-Skript der Lage, die Datei zu suchen (wird nicht arbeiten, wenn es in einem anderen Pfad ist). Aber sqlldr ist ein Oracle-Tool, das an einem anderen Ort installiert wird, so dass Sie den vollständigen Pfad übergeben müssen, um eine Datei zu finden.