有没有办法从plpgsql
中编写的函数运行批处理文件?
最佳答案
这不可能直接从PL/PgSQL获得。
只能通过在不受信任的PL(如PL/Perlu或PL/Pythonu)中提供一个helper函数来实现,该函数反过来运行批处理文件。
在Python中,您将使用如下内容:
CREATE FUNCTION exec_system_cmd (command text)
RETURNS return-type
AS $$
import os
import sys
os.system(command)
$$ LANGUAGE plpythonu;
或者您可以更复杂一些,使用
subprocess
模块来传递参数数组,这样就不必担心在命令字符串中转义%
、>
和其他特殊字符。显然
exec_system_cmd
只能由超级用户执行,如果可能的话,您应该编写一个更专门的函数,不让用户运行任何他们喜欢的命令。虽然这是可能的,但这并不是一个好主意。我同意Erwin的观点,即最好有一个外部帮助程序在需要时使用
LISTEN
和NOTIFY
来运行命令。关于postgresql - 如何从plpgsql函数运行bat文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22522686/