Postgres相当于Oracle" DIRECTORY"对象

时间:2017-01-12 08:29:56

标签: postgresql plpgsql

是否可以在Postgres中创建"DIRECTORY"对象?

如果没有,有些人可以帮我解决一下如何在PostgreSQL上实现它。

3 个答案:

答案 0 :(得分:2)

不是最佳选择,但您可以使用:

COPY (select 1) TO PROGRAM 'mkdir --mode=777 -p /path/to/your/directory/'

请注意,只有目录的最后一部分才能获得在模式中设置的权限。

答案 1 :(得分:1)

这个问题甚至没有意义。 PostgreSQL是一个数据库管理系统。它没有文件和目录。

我能想到的最接近的并行是模式 - 请参阅CREATE SCHEMA

现在,如果你想使用COPY将输出写入服务器的磁盘并想要创建一个目录来将该输出放入...那么不,没有什么比这更好的了那。但你可以使用PL / Perlu或PL / Pythonu来轻松完成。

答案 2 :(得分:0)

Postgres中没有与“Oracle目录”相同的概念。

替代方案取决于为什么需要“Oracle目录”。

如果需要在数据库服务器上读取和写入文件的目录,则可以通过Generic File Access Functions完成此操作。只有超级用户才能访问这些功能(详见本手册的链接部分)。如果常规用户应该能够使用它们,那么最好的方法是创建包装函数,然后将这些函数的执行权授予相关用户。

出于安全原因,只能访问database cluster内的目录。

但是可以在数据目录中创建指向数据目录之外的目录的符号链接。需要为postgres操作系统用户(启动postgres进程的用户)正确设置对这些目录的访问权限。

如果需要该目录来访问,例如CSV文件通过Oracle的外部表,然后就不需要“目录”了。 file FDW外部数据包装器可以访问数据目录之外的文件(提供的访问权限已在文件系统级别上正确设置)。