以非超级用户身份在 file_fdw 上创建外部 table

Create foreign table on file_fdw as non-superuser

我已经创建了一个 file_fdw 扩展和一个相应的服务器作为超级用户。

CREATE EXTENSION file_fdw;
CREATE SERVER myserver FOREIGN DATA WRAPPER file_fdw;

ALTER SERVER myserver OWNER TO nonsuperuser;

我想让一个非超级用户nonsuperuser使用这个服务器创建一个外国table

CREATE FOREIGN TABLE test (
   a text NULL,
   b text NULL
)
SERVER myserver
    OPTIONS (filename '/home/me/mycsvfile.csv', format 'csv', header 'true', delimiter ';');

执行此操作会导致“只有超级用户才能更改 file_fdw 外国 table

的选项

如何才能使 nonsuperuser 能够创建外部 table?如果可能的话,我不介意将选项声明为超级用户。

只允许高权限用户访问数据库服务器上的文件,这就是为什么您需要高权限才能创建 file_fdw 国外 table.

从错误消息可以看出,您使用的是旧版本的 PostgreSQL;在较新的版本中,错误消息如下所示:

only superuser or a member of the pg_read_server_files role may specify the filename option of a file_fdw foreign table

因此,作为处理超级用户权限的替代方法,您可以将用户添加到 pg_read_server_files 角色。

升级 PostgreSQL!