SQL*Loader-522: lfiopn échec pour le fichier
Je suis en dessous de l'erreur dans mon script qui exécute une SQLLDR :
SQL*Loader-522: lfiopn failed for file (/home/abc/test_loader/load/badfiles/TBLLOAD20150520.bad)
Autant ma connaissance, c'est l'erreur liée à l'autorisation,mais je me demande dans le dossier "/charge" il n'y a pas de "badfiles" dossier présent .j'ai déjà définir un dossier badfiles en dehors de la charge de dossier,mais pourquoi dans l'erreur c'est de prendre cette position ?
il est comme mon fichier d'entrée avoir un problème et SQLLDR en essayant de créer un mauvais fichier dans la mention de l'endroit ?
ci-dessous est la SQLLDR commande :
$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 &
ci-dessous le fichier de contrôle de température :
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
)
- Quelle est la commande que vous utilisez pour exécuter SQL*Loader, et ce n'votre fichier de contrôle contiennent? (Veuillez ajouter comme une modification à la question, non pas comme un commentaire!). J'imagine que vous utilisez des chemins relatifs.
- essayez d'exécuter le chargeur à l'aide de strace
strace -f -e trace=file sqllder ...
. Et vous comment il interagit avec le système de fichiers. - Quelles sont les valeurs de $BADFDIR, $FICHIERDÉFECTUEUX et $NOM_TABLE? Si l'ensemble n'est pas un chemin d'accès complet, où en êtes-vous de l'exécution de votre script à partir de? J'espère que cela va devenir évident que ce qui se passe quand vous voyez ces valeurs et comment ils se rapportent à l'endroit où il tente de créer le fichier.
- Tous les $BADFDIR ,$FICHIERDÉFECTUEUX et $NOM_TABLE sont le chemin d'accès et le nom de la table que je définis dans un fichier de config, et j'ai déjà concernent ceux chemin,mais pas où je mentionne le chemin, qui est entrée dans l'ERREUR,même le chemin d'accès (NOM du DOSSIER) dans le message d'erreur est nulle part existe pas dans le répertoire du fichier . Je ne suis pas en mesure de comprendre d'où ce chemin en venant dans l'erreur ? @AlexPoole
- Je comprends ce que les variables représentent; vous n'avez pas dit ce que les valeurs de ces variables lorsque le script est exécuté et produit l'erreur. Ou le répertoire que vous exécutez le script de. Si $BADFDIR est juste
badfiles' then it's using a relative path, and if you run the script from the
charge répertoire (ou le script change à cela), ils, il serait par rapport à cela, ce qui vous donnerait le.../load/badfiles
chemin d'accès complet. Mais je vais avoir à deviner parce que vous n'avez pas donné les valeurs réelles dans la question.
Vous devez vous connecter pour publier un commentaire.
Oui, votre fichier d'entrée est d'avoir un problème de sorte que le sqlldr veut créer un fichier contenant les lignes rejetées (fichier incorrect). Le MAUVAIS création du fichier échoue en raison de l'insuffisance des privilèges de l'utilisateur qui exécute le sqlldr n'a pas les droits pour créer un fichier dans le dossier que vous avez défini pour contenir les MAUVAIS fichiers.
Ajouter les droits d'écriture sur le MAUVAIS dossier de l'utilisateur qui exécute le sqlldr ou placez le MAUVAIS dossier ailleurs.