Postgresql 如何从plpgsql函数运行bat文件
是否有任何方法可以从Postgresql 如何从plpgsql函数运行bat文件,postgresql,batch-file,postgresql-9.1,plpgsql,Postgresql,Batch File,Postgresql 9.1,Plpgsql,是否有任何方法可以从plpgsql中编写的函数运行批处理文件?出于安全原因,没有直接的方法。 查看以在数据库外部触发可执行文件。出于安全原因,没有直接的方法。 查看以在数据库外部触发可执行文件。直接从PL/PgSQL是不可能的 您只能通过在不受信任的PL(如PL/Perlu或PL/Pythonu)中提供一个helper函数来实现这一点,该PL/Perlu或PL/Pythonu反过来运行批处理文件 在Python中,您可以使用如下内容: CREATE FUNCTION exec_system_cm
plpgsql
中编写的函数运行批处理文件?出于安全原因,没有直接的方法。查看以在数据库外部触发可执行文件。出于安全原因,没有直接的方法。
查看以在数据库外部触发可执行文件。直接从PL/PgSQL是不可能的 您只能通过在不受信任的PL(如PL/Perlu或PL/Pythonu)中提供一个helper函数来实现这一点,该PL/Perlu或PL/Pythonu反过来运行批处理文件 在Python中,您可以使用如下内容:
CREATE FUNCTION exec_system_cmd (command text)
RETURNS return-type
AS $$
import os
import sys
os.system(command)
$$ LANGUAGE plpythonu;
或者您可以更复杂一点,使用子流程
模块来传递参数数组,这样就不必担心转义%
,
和命令字符串中的其他特殊字符
显然,exec\u system\u cmd
只能由超级用户执行,如果可能的话,您应该编写一个更专门的函数,不让用户运行任何他们喜欢的命令
虽然这是可能的,但这并不是一个好主意。我同意Erwin的观点,最好有一个外部帮助程序,在需要时使用
LISTEN
和NOTIFY
来运行命令。直接从PL/PgSQL是不可能的
您只能通过在不受信任的PL(如PL/Perlu或PL/Pythonu)中提供一个helper函数来实现这一点,该PL/Perlu或PL/Pythonu反过来运行批处理文件
在Python中,您可以使用如下内容:
CREATE FUNCTION exec_system_cmd (command text)
RETURNS return-type
AS $$
import os
import sys
os.system(command)
$$ LANGUAGE plpythonu;
或者您可以更复杂一点,使用子流程
模块来传递参数数组,这样就不必担心转义%
,
和命令字符串中的其他特殊字符
显然,exec\u system\u cmd
只能由超级用户执行,如果可能的话,您应该编写一个更专门的函数,不让用户运行任何他们喜欢的命令
虽然这是可能的,但这并不是一个好主意。我同意欧文的观点,最好有一个外部帮助程序,使用LISTEN
和NOTIFY
在需要时运行命令