Pl-SQL-text-Datei aus dem Verzeichnis der Datenbank
Ich lese eine text-Datei, die ich erstellt habe auf die Datenbank. Ich bin nicht sicher, was der geeignete Weg wäre für die UTL_FILE.FOPEN
directory-parameter. Ich bin verwirrt, weil der Pfad ist nicht auf meinem lokalen pc.
Den Pfad gefunden, wo ich diese Datei ist so etwas wie
\\{something here}\winixdb$\{schema here I think}\dev\data
Dies ist mein Aktueller code.
Declare
f UTL_FILE.FILE_TYPE;
s VARCHAR2(200);
begin
f:= UTL_FILE.FOPEN({path_here}, 'certs_file.txt', 'R');
UTL_FILE.GET_LINE(f,s);
UTL_FILE.FCLOSE(f);
dbms_output.put_line(s);
end;
Gerade jetzt, wenn ich den genauen Pfad dort wird es einen Fehler:
ORA-2928: Invalid Directory Path
Ich habe versucht, auf der Suche nach anderen Ressourcen, sondern Sie reden über einen Pfad auf Ihrem lokalen Umfeld. Auch, ich verstehe nicht ganz die Idee, eine Datei für Ihre Datenbank.
Ich möchte sehen, wie diese Datei ausgegeben werden, um das DBMS.
directory
ist ein Datenbank-Objekt, das Sie erstellen müssen (genauso wie das erstellen einer Tabelle oder eines index). Die Lage ist auf dem db-server-Maschine, nicht auf dem client.kann ich acces die Lage aus mit Kröte, die Navigation auf schema -, Verzeichnis-und finden es dort? edit: ich habe das und setzen in den genauen Verzeichnis-Pfad, aber ich Schaffe es immer noch Fehler
Ich vermute, dass der Pfad, dem wir reden, ist ein UNC-Pfad und, dass die Datenbank auf Windows läuft (korrigiert mich wenn ich falsch Liege). Bringen Sie den vollständigen UNC-Pfad in der
fopen
nennen? Ist, dass der Pfad in Ihrem utl_file_dir
Einstellung? Oder hast du ein Verzeichnis-Objekt, dass die Punkte an diesem UNC-Pfad? Liegt der system-Benutzer ausführen des Oracle service haben Zugriff auf diesen UNC-Pfad?InformationsquelleAutor qaispak | 2016-07-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie Sie zunächst deklarieren Sie das Verzeichnis, das Sie zugreifen möchten
{path_here}
:(wenn es bereits vorhanden ist, sollten Sie es mit
select * from dba_directories;
)Dann nennen es durch seinen Namen in Ihrem code:
Die nur-Lesen-Zugriff sollte reichen. Danke, ich aktualisierte diese.
Muss ich es erklären? Ich sehe einige Pakete, die in anderen schemas, in dem es nicht deklariert ist (oder erklärt nur, wie eine variable).
Sie deklarieren es auf der Datenbank, nicht im Paket. Prüfen Sie, ob es bereits vorhanden, mit
select * from dba_directories;
Ja. Ich sehe den Namen des Verzeichnisses, V_COP. Wenn ich es schaffen, in meinem plsql-Datei bekomme ich eine ungenügende priveldges Fehler, aber das macht keinen Sinn, da kann ich navigieren Sie zu dem Verzeichnis, und Lesen/schreiben der Dateien. Außerdem, ich sehe Menschen, Lesen von Dateien ohne Sie zu deklarieren Verzeichnis.
InformationsquelleAutor J. Chomel