comment puis-je lire un fichier local dans SQL Developer?
Je veux lire un fichier sur ma machine locale qui contient les paramètres de la requête lorsque j'exécute une requête dans Oracle SQL developer. Les exemples que j'ai trouvé sur le web jusqu'à présent sont insuffisantes. Je reçois des "ORA-29283: fichier non valide l'opération" des erreurs lorsque j'execute le code ci-dessous:
CREATE DIRECTORY SAMPLEDATA2 AS 'C:';
GRANT READ, WRITE ON DIRECTORY SAMPLEDATA2 TO PUBLIC;
declare
f utl_file.file_type;
s varchar2(200);
c number := 0;
BEGIN
f := utl_file.fopen('SAMPLEDATA2','sample2.txt','R');
loop
utl_file.get_line(f,s);
dbms_output.put_line(s);
c := c + 1;
end loop;
exception
when NO_DATA_FOUND then
utl_file.fclose(f);
dbms_output.put_line('Number of lines: ' || c);
end;
Vous devez vous connecter pour publier un commentaire.
UTL_FILE
ne peut lire les données à partir de fichiers qui sont stockés sur le serveur de base de données. Puisque c'est le code PL/SQL, il s'exécute sur le serveur de base de données et n'a accès qu'aux ressources qui sont disponibles à l'Oracle processus sur le serveur de base de données.DBMS_LOB
paquet pour lire les données à partir de la CLOB. Mais ce serait tout à fait différente de la sémantique. Vous seriez généralement mieux de copier le fichier vers le serveur de base de données et l'utilisation deUTL_FILE
pour lire le fichier (en supposant, bien sûr, que vous ne serait pas mieux d'utiliser SQLLoader pour charger les données du fichier dans un tableau).Cela semble inhabituel - j'allais dire 'particulière' -décision architecturale. D'où viennent ces valeurs comne à partir de? Pourquoi elles doivent être stockées dans un fichier? Combien de fois ont-ils changer?
Il va être très difficile d'exposer le contenu d'un PC local de fichier à distance à un serveur de base de données (c'est à dire que nous parlons d'automatisation avec
ftp
ou d'un manuel de processus impliquant quelque chose comme WinSCP).D'autre part, il pourrait être très simple à appliquer certains paramètres de requête pour une requête, par exemple en utilisant SYS_CONTEXT et les espaces de noms. Mais j'ai besoin de savoir plus de détails avant que je puisse fournir une solution alternative.