1

我们让 PostgreSQL 在一个 unix 机器上运行,多个用户同时拥有单独的 unix 帐户和单独的数据库登录名。我们试图为这些用户启用的工作流程是:

  1. 将大文件传输到服务器(通常通过 Samba)
  2. 建立从用户 PC 到 PostgreSQL 的远程连接
  3. 将大文件读入(最好是临时)表并进行一些分析

绊脚石是如何在登录 PostgreSQL 时访问文件。乍一看,这似乎不可能安全地进行,因为数据库在该postgres帐户下运行,该帐户甚至无法访问属于其他 unix 帐户的文件。开箱即用,我相信 PostgreSQL 用户可以访问本地文件的唯一方法是 (a) 使文件可由 unix 帐户读取,以及 (b) 赋予数据库用户提升的权限postgres以允许他们使用COPY FROM邮递员。这是不可能的;用户必须不能读取彼此的数据。

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

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

4

1 回答 1

1

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

libname psql odbc (connection-string);
data psql.mytable;
set sastable;
run;

当然,这需要先在本地读入 SAS,但这可能是微不足道的。这里的主要潜在问题是时间——以这种方式传输无疑比通过 SAMBA 传输要慢;但也许为了简单而花费的时间是值得的?

于 2013-02-22T08:41:36.170 回答