Oracle
 sql >> Datenbank >  >> RDS >> Oracle

So lösen Sie das Problem mit Oracle DBMS_LOB

Von der Dokumentation, auf die Sie verlinkt haben :

also GRUPO sollte zu 'DIR_XML' ausgewertet werden statt 'C:\XMLS' . Das wird im Beispiel in dieser Dokumentation gezeigt. (Es gab einen alten Pre-Directory-Object-Mechanismus, der auf einem als Datenbankparameter gespeicherten Pfad basierte, aber das war weniger sicher...)

Wenn Sie nur den Pfad haben, können Sie den Verzeichnisnamen nachschlagen:

select directory_name from all_directories where directory_path = 'C:\XMLS'

Denken Sie daran, dass Verzeichnispfade nicht eindeutig sein müssen, sodass Sie möglicherweise mit Duplikaten rechnen müssen.

Aber wie @Matthew bereits erklärt hat, und wie die Dokumentation sagt (Hervorhebung hinzugefügt):

Die Datenbank kann nur Dateien auf ihrem eigenen Dateisystem sehen – lokal oder gemeinsam genutzt – und nicht die auf Client-Dateisystemen. Wenn Sie die DB auch lokal ausführen, gibt es keinen Unterschied (obwohl Verzeichnis- und Dateiberechtigungen immer noch eine Rolle spielen). Wenn Sie auf eine entfernte Datenbank zugreifen, kann sie Ihr Client-Laufwerk C:nicht sehen, und wenn Sie den Verzeichnisobjektnamen angeben, erhalten Sie immer noch etwas wie:

ORA-22288: file or LOB operation FILEOPEN failed
No such file or directory

Sie müssen Ihre XML-Dateien in einem Verzeichnis auf dem DB-Server ablegen, auf das das Betriebssystemkonto Zugriff hat, und ein Verzeichnisobjekt erstellen, das auf diesen Speicherort auf dem Server verweist. und beziehen Sie sich dann auf den Namen des Verzeichnisobjekts, nicht auf den zugrunde liegenden Dateisystempfad.