通过连接到远程PostgreSQL服务器访问文件系统

时间:2013-02-22 08:14:56

标签: postgresql sas

我们在unix框上运行PostgreSQL,并且多个用户同时拥有单独的unix帐户和单独的数据库登录。我们尝试为这些用户启用的工作流程类型为:

  1. 将大文件传输到服务器(通常通过Samba)
  2. 建立从用户PC到PostgreSQL的远程连接
  3. 将大文件读入(最好是临时的)表并进行分析
  4. 绊脚石是登录PostgreSQL时如何访问文件。乍一看似乎无法安全地执行此操作,因为数据库在postgres帐户下运行,该帐户甚至无法访问属于其他unix帐户的文件。开箱即用,我相信PostgreSQL用户可以访问本地文件的唯一方法是(a)使postgres unix帐户可以读取文件,以及(b)为数据库用户提供提升权限以允许它们在Postgres中使用COPY FROM命令。这是不可能的;用户必须无法读取彼此的数据。

    我们当前使用的解决方法是shell进入服务器并运行psql,这允许用户使用\copy元命令从本地文件中提取数据。但这使工作流程变得复杂,对于我们的用户来说并不是很令人满意,因为他们大多不熟悉unix。相反,他们希望从基于PC的分析软件包SAS驱动整个过程,该软件包可以通过ODBC直接连接到Postgres。

    我正在寻找这个问题的创意解决方案。显然,我上面列出的天真工作流程与unix安全模型完全不一致。但是,从用户的角度来看,是否存在类似功能的替代方案?我们很高兴考虑存储过程,中间人代理等。

1 个答案:

答案 0 :(得分:1)

如果您的用户通过SAS连接,他们是否可以通过SAS-PSQL连接自行上传文件?作为SAS用户,这当然是可能的;

之类的东西
libname psql odbc (connection-string);
data psql.mytable;
set sastable;
run;

当然,这需要首先在本地读取SAS,但这可能是微不足道的。这里的主要潜在问题是时间 - 转移这种方式无疑比SAMBA更慢;但也许为了简单起见,所花费的时间是值得的吗?