如何從PL/SQL內部在OS上創建物理目錄?我看了一下CREATE OR REPLACE DIRECTORY
的命令,但那不行。 UTL_FILE
似乎也沒有能力。如何在文件系統上創建目錄?
回答
最後我找到了一個更簡單的解決方案。使用
select os_command.exec('mkdir /home/oracle/mydir') from dual;
或者乾脆
x := os_command.exec('mkdir /home/oracle/mydir');
我相信唯一的方法是使用外部過程(C或Java)並通過PL/SQL調用它。 PL/SQL本身沒有辦法創建物理OS目錄。
PL/SQL Tips提供了一個很好的例子,說明如何創建一個執行shell命令的C外部過程。請注意,我不認爲最好的做法是出於安全原因考慮到這一點。
它,你可以先創建的目錄,然後你可以使用
create or replace directory myDir as '<path-to-dir>/myDir';
請注意,您將需要具有CREATE分配給執行命令的用戶ANY DIRECTORY權限。在使用上述命令創建目錄之後,請確保將該目錄的任何必需特權分配給其他用戶。
grant read, write on directory myDir to testUsers;
UTL_FILE
仍然缺乏這種能力 - 可能是從預DIRECTORY
對象天,你必須明確定義,你可以在啓動參數訪問操作系統文件目錄保持,所以沒有需要動態創建目錄無論如何。
我認爲這樣做最簡單的方法是使用Oracle Java存儲過程:
File f = new File(dirname);
return (f.mkdir()) ? 1 : 0;
如果你走這條路線,確保您使用dbms_java.grant_permission
授予java.io.FilePermission
到擁有執行用戶碼。
感謝。我討厭編寫Java,除非絕對被迫。最後,我找到了一個更簡單的方法,使用os_command.exec和mkdir一起使用PLSQL。看到我下面的評論。 – TrojanName 2011-05-11 10:35:20
我剛剛檢查了數據庫版本11.2的新文檔,並且仍然沒有可以找到創建目錄的例程。因此,與其他受訪者一樣,我建議使用Java或C例程。
- 1. Android文件系統上的目錄和文件創建
- 2. 節點文件系統在郵件路由上創建目錄和文件
- 3. 在hadoop文件系統中創建目錄
- 4. OpenShift Enterprise在根文件系統中創建目錄
- 5. 無法在hadoop文件系統中創建目錄
- 6. 您可以在系統剪貼板上創建文件,但不能在目錄中創建文件?
- 7. 文件/系統目錄
- 8. 如何在SQL Server 2005調用/查詢中創建文件系統目錄
- 9. 如何在Android數據/數據/項目文件系統中創建文件目錄和文件夾
- 10. 在文件中創建文件系統
- 11. 在文件系統中創建文件
- 12. 如何在保存文件時在文件系統上創建文件夾
- 13. 在ext2文件系統的根目錄下創建一個新文件
- 14. Node-Webkit:如何在本地文件系統中創建文件?
- 15. 如何在Android的文件系統中創建子文件
- 16. 在AHK上創建文本宏系統
- 17. 如何在文件系統的目錄中刪除ATR文件後重新創建ATR文件?
- 18. 如何在內存中創建一個目錄?僞文件系統/虛擬目錄
- 19. HTML5文件系統:文件未在設備上創建
- 20. 在創建文件時創建目錄
- 21. 無法創建本地文件系統如何寫入本地文件系統
- 22. 如何爲共享目錄創建系統範圍的別名
- 23. 在windows中創建文件系統
- 24. 如何使用javascript迭代文件系統目錄和文件?
- 25. 如何在傳統ASP中爲複製文件創建目標目錄結構?
- 26. 如何在超系統中創建文本文件
- 27. 如何爲dist文件創建目錄?
- 28. 使用python2.7移動遠程文件系統上的文件(目錄到目錄)
- 29. 如何在動態創建的目錄中創建文件?
- 30. 如何在枚舉目錄時訪問系統文件夾?
我只是在這裏添加一個鏈接到os_command,因爲我之前不知道它.. http://plsqlexecoscomm.sourceforge.net/ – ShoeLace 2013-08-16 01:51:25