我已经创建了一个file_fdw扩展名和一个作为超级用户的相应服务器。
CREATE EXTENSION file_fdw;
CREATE SERVER myserver FOREIGN DATA WRAPPER file_fdw;
ALTER SERVER myserver OWNER TO nonsuperuser;
我希望非超级用户nonsuperuser
使用此服务器创建外部表
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外部表的选项">
如何使nonsuperuser
能够创建外部表?如果可能的话,我不介意将这些选项声明为超级用户。
只有高度特权的用户才能访问数据库服务器上的文件,这就是为什么您需要高权限才能创建file_fdw外部表。
从错误消息中可以清楚地看出,您使用的是旧版本的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!