Lire un fichier texte à insérer des données dans une table SQL Oracle
Je suis étudiant Oracle SQL developer.
Ce que je fais est de la lecture de fichier texte ligne par ligne à partir du dossier.
Puis en Insérant les données de la table SQL.
Je suis en mesure de compiler ma PROCÉDURE, cependant, il ne semble pas être d'insérer les données dans un fichier.
Create or Replace PROCEDURE Rfile is
f UTL_FILE.FILE_TYPE;
s VARCHAR2(200);
BEGIN
f := UTL_FILE.FOPEN('C:\Projects\','testdatabinary.txt','R');
IF UTL_FILE.IS_OPEN(f) THEN
LOOP
BEGIN
UTL_FILE.GET_LINE(f,s);
IF s IS NULL THEN
EXIT;
END IF;
INSERT INTO DATAINSERT
(COLUMN1, COLUMN2)
VALUES
(s, 'testdatabinary');
END;
END LOOP;
COMMIT;
END IF;
END;
Et j'ai une table DATAINSERT avec deux varchar(200) type cols
Je ne suis pas vraiment sûr que les raisons de cette PROCÉDURE n'est pas en insérant les données à la table
Je viens de vérifier le message d'erreur
Error starting at line 1 in command:
EXEC Rfile
ORA-29280: invalid directory path
ORA-06512: at "SYS.UTL_FILE", line 41
ORA-06512: at "SYS.UTL_FILE", line 478
ORA-06512: at "SYSTEM.RFILE", line 5
Est votre première ligne est NULLE? Vous pouvez utiliser dbms_output.put_line(s) pour voir ce que c'est de la lecture.
Non , C'est le problème de chemin d'accès au répertoire. J'ai vérifié et copier et coller le répertoire du fichier exactement :(. cependant, il est toujours en train de faire un problème
Et ce fichier/répertoire existe sur le serveur? Ne voyant rien de mal avec le code.
oui ! j'ai donc créer le chemin d'accès nom comme "MYDIR" et je repleased comme f := UTL_FILE.FOPEN('MYDIR','testdatabinary.txt','R');
alors je suis d'erreur comme "01403. 00000 - "pas de données disponibles""
Non , C'est le problème de chemin d'accès au répertoire. J'ai vérifié et copier et coller le répertoire du fichier exactement :(. cependant, il est toujours en train de faire un problème
Et ce fichier/répertoire existe sur le serveur? Ne voyant rien de mal avec le code.
oui ! j'ai donc créer le chemin d'accès nom comme "MYDIR" et je repleased comme f := UTL_FILE.FOPEN('MYDIR','testdatabinary.txt','R');
alors je suis d'erreur comme "01403. 00000 - "pas de données disponibles""
OriginalL'auteur Dc Redwing | 2013-02-12
Vous devez vous connecter pour publier un commentaire.
Pas sûr de ce qui cause des problèmes. Pour moi sa fonctionne bien voici mon code d'exemple
--Site De Référence
--https://community.oracle.com/thread/3633577?start=0&tstart=0
OriginalL'auteur laks
Vous ne pouvez pas en mesure d'entrer le chemin d'accès directement à la commande ouvrir du fichier comme ceci
Au lieu de saisir un chemin d'accès directement, vous devez créer un répertoire à l'aide de la requête sql ci-dessous
De CRÉER ou de remplacer le RÉPERTOIRE USER_DIR 'C:\PROJECTS\';
Puis entrez le nom du répertoire pour le fichier de la commande d'ouverture. Il sera comme ceci
OriginalL'auteur Nizar
Première procédure essayez de charger le fichier à partir du PC sur le serveur alors que dans le deuxième fichier de la procédure est de serveur à serveur.
UTL_FILE.FOPEN
fonctionne côté serveur PL/SQL. Donc, la première procédure de l'habitude de l'exécuter correctement... Si vous voulez charger un fichier du PC vers le serveur, puis vous le besoin de l'utilisateur à la une fin comme D@K ou VB.OriginalL'auteur Mahesh
L'erreur que vous faites ici est d'utiliser la station de travail en chemin, vous avez réellement besoin pour être en utilisant le chemin d'accès au répertoire.
Le moyen le plus rapide pour résoudre ce problème, est que pour utiliser le WINSCP commande.
Utilisation WINSCP vous dire ce que le chemin d'accès au répertoire est le cas, alors il vous suffit de remplacer cette nouvelle information pour l'ancien chemin d'accès que vous avez dans votre code, et tout devrait fonctionner.
OriginalL'auteur Prince Sharma
C'est très conceptuel et délicat. qui vous pouvez trouver plus d'concepts et les détails ci-dessous:
https://ora-data.blogspot.in/2016/11/read-and-writ-text-file-using-UTLFILE.html
Vous sera utile:
OriginalL'auteur Sapna
de la première connexion avec
nom d'utilisateur:sys en tant que sysdba
mot de passe doit être le même que celui utilisé pour l'utilisateur "system"
maintenant entrer
SQL> grant execute sur UTL_FILE PUBLIQUE;
Maintenant vous connecter avec n'importe quel utilisateur avec lequel vous souhaitez créer la procédure
Je suppose que la raison pour laquelle le downvote, c'est que votre réponse ne correspond pas à la question? Le message d'erreur que l'OP a été de ne pas en raison du manque de Subventions, mais en raison d'un mauvais appel.
OriginalL'auteur Abhinav