如何从plpgsql函数运行bat文件

时间:2014-03-20 03:07:59

标签: postgresql batch-file postgresql-9.1 plpgsql

有没有办法从plpgsql中编写的函数运行批处理文件?

2 个答案:

答案 0 :(得分:3)

直接来自PL / PgSQL是不可能的。

您只能通过在PL / Perlu或PL / Pythonu之类的不受信任的PL中提供辅助函数来执行此操作,PL / Peru或PL / Pythonu依次运行批处理文件。

在Python中,您可以使用以下内容:

CREATE FUNCTION exec_system_cmd (command text)
  RETURNS return-type
AS $$
  import os
  import sys
  os.system(command)
$$ LANGUAGE plpythonu;

或者你可能会更复杂并使用subprocess模块来传递一组参数,因此你不必担心转义%,{{1} }和命令字符串中的其他特殊字符。

显然>只能由超级用户执行,如果可能的话,你应该编写一个更专业的函数,让用户不要运行他们喜欢的任何命令。

虽然可能,但这并不是一个好主意。我同意Erwin的意见,如果需要使用exec_system_cmdLISTEN来运行命令,那么最好有一个外部帮助程序。

答案 1 :(得分:2)

出于安全原因,没有直接的方式 查看LISTEN / NOITIFY以触发数据库外的可执行文件。