SQL*Loader-522: lfiopn ist fehlgeschlagen für die Datei
Ich bin immer folgende Fehlermeldung in meinem Skript, welches ausgeführt wird, eine SQLLDR :
SQL*Loader-522: lfiopn failed for file (/home/abc/test_loader/load/badfiles/TBLLOAD20150520.bad)
Soweit meine Kenntnisse dies ist der Fehler, bezogen auf die Erlaubnis,aber ich Frage mich, in den Ordner "/laden" gibt es keine "badfiles" Ordner vorhanden .ich habe schon definieren badfiles-Ordner außerhalb der laden-Ordner,aber warum in der Fehlermeldung ist es unter dieser location ?
ist es wie meine input-Datei mit einigen problem und SQLLDR versuchen, um eine bad-Datei in der Erwähnung Standort ?
unten ist die SQLLDR Befehl :
$SQLLDR $LOADER_USER/$USER_PWD@$LOADER_HOSTNAME control=$CTLFDIR/CTL_FILE.ctl BAD=$BADFDIR/$BADFILE$TABLE_NAME ERRORS=
0 DIRECT=TRUE PARALLEL=TRUE LOG=$LOGDIR/$TABLE_NAME$LOGFILE &
unten ist die control-Datei temp :
LOAD DATA
INFILE '/home/abc/test_loader/load/FILENAME_20150417_001.csv' "STR '\n'"
APPEND
INTO TABLE STAGING.TAB_NAME
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
(
COBDATE,
--
--
--
FUTUSE30 TERMINATED BY WHITESPACE
)
Was ist der Befehl, den Sie verwenden zum ausführen von SQL*Loader, und was macht Ihr control-Datei enthalten? (Fügen Sie bitte als edit zu der Frage, nicht als Kommentar!). Ich nehme an, du hast relative Pfade zu verwenden.
versuchen, führen Sie das loader mit strace
Was sind die Werte von $BADFDIR, $DEFEKTEDATEI und $TABLE_NAME? Wenn Sie zusammen nicht für einen vollständigen Pfad, wo Sie Ihr Skript aus? Ich hoffe, es wird offensichtlich werden, was passiert, wenn Sie sehen, dass diese Werte und wie Sie sich auf, wo er versucht, die Datei zu erzeugen.
Alle $BADFDIR ,$DEFEKTEDATEI und $TABLE_NAME sind die Pfad-und Tabellennamen, die ich definieren, in einer config-Datei und ich schon, beziehen sich diese Weg,aber nicht, wo ich erwähnt das Weg ist kommen die FEHLER,auch den Pfad (ORDNER-NAME) in der Fehlermeldung wird nirgends gibt es in der Datei-Verzeichnis . Ich bin nicht in der Lage zu verstehen, Woher dieser Pfad kommt, der Fehler??? @AlexPoole
Ich verstehe, was die Variablen bedeuten; Sie haben nicht gesagt, was Werte die Variablen haben, wenn das Skript ausgeführt und erzeugt Fehler. Oder in welchem Verzeichnis man das Skript ausführen aus. Wenn $BADFDIR ist nur
versuchen, führen Sie das loader mit strace
strace -f -e trace=file sqllder ...
. Und Sie wird die Interaktion mit dem Dateisystem.Was sind die Werte von $BADFDIR, $DEFEKTEDATEI und $TABLE_NAME? Wenn Sie zusammen nicht für einen vollständigen Pfad, wo Sie Ihr Skript aus? Ich hoffe, es wird offensichtlich werden, was passiert, wenn Sie sehen, dass diese Werte und wie Sie sich auf, wo er versucht, die Datei zu erzeugen.
Alle $BADFDIR ,$DEFEKTEDATEI und $TABLE_NAME sind die Pfad-und Tabellennamen, die ich definieren, in einer config-Datei und ich schon, beziehen sich diese Weg,aber nicht, wo ich erwähnt das Weg ist kommen die FEHLER,auch den Pfad (ORDNER-NAME) in der Fehlermeldung wird nirgends gibt es in der Datei-Verzeichnis . Ich bin nicht in der Lage zu verstehen, Woher dieser Pfad kommt, der Fehler??? @AlexPoole
Ich verstehe, was die Variablen bedeuten; Sie haben nicht gesagt, was Werte die Variablen haben, wenn das Skript ausgeführt und erzeugt Fehler. Oder in welchem Verzeichnis man das Skript ausführen aus. Wenn $BADFDIR ist nur
badfiles' then it's using a relative path, and if you run the script from the
laden` - Verzeichnis (oder das Skript ändert, um zu, dass) Sie würde es werden, bezogen auf die, die Ihnen wäre die .../load/badfiles
vollständigen Pfad. Aber ich habe zu erraten, denn Sie haben nicht die tatsächlichen Werte in der Frage.InformationsquelleAutor sabya | 2015-05-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, deine input-Datei ist ein problem aufgetreten, so dass die sqlldr will, erstellen Sie eine Datei mit den zurückgewiesenen Zeilen (UNGÜLTIGE Datei). Die BAD-Datei-Erstellung fehlschlägt aufgrund unzureichender Berechtigungen - Benutzer, führt die sqlldr keine Rechte zum erstellen der Datei in dem von Ihnen angegebenen Ordner enthalten SCHLECHTE Dateien.
Hinzufügen von Schreibrechten auf die SCHLECHTE Ordner an den Benutzer läuft die sqlldr oder Ort, der SCHLECHT anderen Ordner.
Sieht aus wie der gleiche Fehler kann auftauchen, wenn es Probleme mit dem Zugriff auf die log-Datei als auch. Diese Antwort führte mich zu ihm, aber es scheint, wie es könnte eine Vielzahl von anderen Fragen im Zusammenhang mit der Datei oder den Ordner zugreifen könnte, zeigen die gleichen Symptome.
InformationsquelleAutor Daniel Smolka