繁体   English   中英

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

[英]Access filesystem via connection to remote PostgreSQL server

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

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

绊脚石是如何在登录PostgreSQL时访问文件。 乍一看,这似乎不可能安全地进行,因为数据库是在postgres帐户下运行的,该帐户甚至无法访问属于其他unix帐户的文件。 开箱即用,我认为PostgreSQL用户访问本地文件的唯一方法是(a)使这些文件可由postgres unix帐户读取,并且(b)为数据库用户提供更高的特权,以允许他们使用COPY FROM Postgres中的COPY FROM命令。 这是不可能的。 用户必须不能读取彼此的数据。

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

我正在寻找一种解决此问题的创造性方法。 显然,我上面列出的天真的工作流程与unix安全模型完全不符。 但是,从用户的角度来看,是否有一种替代方法可以起到类似的作用? 我们很高兴考虑存储过程,中间人代理等。

如果您的用户通过SAS连接,他们是否可以通过SAS-PSQL连接自己上传文件? 以SAS用户的身份讲这当然是可能的。 就像是

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

当然,这需要先将其本地读取到SAS中,但这可能并不重要。 这里的主要潜在问题是时间-毫无疑问,这种传输方式比通过SAMBA传输要慢。 但是为简单起见,花时间值得吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM