我怎样才能创建文件系统的目录?(How can I create a directory on th

2019-09-29 06:08发布

如何从PL / SQL中创建的OS上的物理目录? 我看着CREATE OR REPLACE DIRECTORY命令,但不这样做。 也不对UTL_FILE似乎能。

Answer 1:

UTL_FILE仍然缺乏这种能力-可能是从预缓缴DIRECTORY对象天,你必须明确定义,你可以在启动参数访问操作系统文件目录,所以没有必要动态反正创建目录。

我认为,要做到这一点最简单的方法是使用Oracle Java存储过程:

    File f = new File(dirname);
    return (f.mkdir()) ? 1 : 0;

如果你走这条路线,确保您使用dbms_java.grant_permission授予java.io.FilePermission到拥有执行代码的用户。



Answer 2:

最后,我没有找到一个简单的解决方案。 采用

select os_command.exec('mkdir /home/oracle/mydir') from dual;

或者干脆

x := os_command.exec('mkdir /home/oracle/mydir');


Answer 3:

我认为,要做到这一点的唯一方法是使用外部程序(C或Java),并把它通过PL / SQL。 PL / SQL本身并不具备创建物理OS目录的手段。

PL / SQL技巧提供了如何创建执行shell命令一个C外部过程中一个很好的例子。 请注意,我不认为这是最好的做法,让这个出于安全原因。

它可以先创建目录,那么你可以使用

create or replace directory myDir as '<path-to-dir>/myDir';

请注意,您需要有CREATE分配给执行命令的用户ANY DIRECTORY权限。 该目录与上面的命令创建后,一定要在指定的目录中其他用户的任何需要的权限。

grant read, write on directory myDir to testUsers;


Answer 4:

我只是检查数据库版本11.2的新文档,而且也仍然没有例行我能找到创建目录。 所以,像其他受访者中,我推荐使用Java或C例程。



文章来源: How can I create a directory on the file system?