簡體   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