2017-01-14 38 views
0

我正在創建一個使用plpgsql調用.bat文件的過程。這個.bat文件處理文件和目錄(包括mkdir,rmdir ...),但是這些命令沒有被執行。我在讀plpgsql只是用於數據操作 - 所以我假設這是問題。PostgreSQL:mkdir與plpgsql

我該如何解決這個問題?我可以設置一些參數來消除這個限制,使用一種新的語言,或者什麼?

回答

1

您應該使用不可信的語言編寫函數,例如PL/PythonU

For the documentation:

信任的語言是專爲普通數據庫用戶(那些沒有超級用戶權限),並允許他們安全地創建函數和觸發器過程。由於PL功能是在數據庫服務器內部執行的,因此TRUSTED標誌只應用於不允許訪問數據庫服務器內部或文件系統的語言。 PL/pgSQL,PL/Tcl和PL/Perl語言被認爲是可信的; PL/TclU,PL/PerlU和PL/PythonU語言旨在提供無限的功能,不應被標記爲可信。

+0

感謝,有趣的觀點...然而,既然我打電話給一個.bat文件,你的答案仍然適用? '安全'方面在這個腳本的手中 - 不是plpgsql? – Zeruno

+0

在plpgsql函數中直接訪問文件系統是不可能的,你不能從它運行一個bat文件。你需要一個不可信的語言。 – klin

+0

@klin:當OP發佈此問題[3小時前](http://stackoverflow.com/questions/41652664/how-to-set-postgresql-to-save-temp-files)時,他們提到他們是通過'COPY FROM '將其關閉。 –