如何从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