有没有办法从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的观点,即最好有一个外部帮助程序在需要时使用LISTENNOTIFY来运行命令。

关于postgresql - 如何从plpgsql函数运行bat文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22522686/

10-14 18:47
查看更多