我们在unix框上运行PostgreSQL,并且多个用户同时拥有单独的unix帐户和单独的数据库登录。我们尝试为这些用户启用的工作流程类型为:
绊脚石是登录PostgreSQL时如何访问文件。乍一看似乎无法安全地执行此操作,因为数据库在postgres
帐户下运行,该帐户甚至无法访问属于其他unix帐户的文件。开箱即用,我相信PostgreSQL用户可以访问本地文件的唯一方法是(a)使postgres
unix帐户可以读取文件,以及(b)为数据库用户提供提升权限以允许它们在Postgres中使用COPY FROM
命令。这是不可能的;用户必须无法读取彼此的数据。
我们当前使用的解决方法是shell进入服务器并运行psql
,这允许用户使用\copy
元命令从本地文件中提取数据。但这使工作流程变得复杂,对于我们的用户来说并不是很令人满意,因为他们大多不熟悉unix。相反,他们希望从基于PC的分析软件包SAS驱动整个过程,该软件包可以通过ODBC直接连接到Postgres。
我正在寻找这个问题的创意解决方案。显然,我上面列出的天真工作流程与unix安全模型完全不一致。但是,从用户的角度来看,是否存在类似功能的替代方案?我们很高兴考虑存储过程,中间人代理等。
答案 0 :(得分:1)
如果您的用户通过SAS连接,他们是否可以通过SAS-PSQL连接自行上传文件?作为SAS用户,这当然是可能的;
之类的东西libname psql odbc (connection-string);
data psql.mytable;
set sastable;
run;
当然,这需要首先在本地读取SAS,但这可能是微不足道的。这里的主要潜在问题是时间 - 转移这种方式无疑比SAMBA更慢;但也许为了简单起见,所花费的时间是值得的吗?