如何从postgres函数运行python或javascript文件?
我有两个完全不同结构的postgres数据库。
但我需要同步这两个数据库。
我将编写脚本,该脚本将从本地数据库读取数据并以任何语言(python,java,javascript,node)写入服务器数据库。
但主要问题是:
我不知道如何从postgres程序或函数调用该脚本。
问题是:我们如何从postgres程序调用或运行任何脚本?
答案 0 :(得分:4)
使用plperl
,plpython
或pljava
并使用该语言的系统工具。即在plpython中使用subprocess
,在java中使用Runtime.getRuntime().exec
等等:
例如plpython
:
CREATE LANGUAGE plpythonu; -- create language if does not exist
CREATE OR REPLACE FUNCTION venue.test_execute()
RETURNS void AS
$BODY$
import subprocess
subprocess.call(['/path/to/script/test.py'])
$BODY$
LANGUAGE plpythonu;
SELECT venue.test_execute();
考虑因素
实际上,您可以从Postgres函数启动脚本,但这不是在数据库之间同步数据的首选方法。您可能会遇到与脚本和数据的绝对路径和相对路径以及文件系统权限相关的问题。而是使用数据库函数以已知格式导出数据,并从数据库外部调用同步脚本。另一个选项是使用dblink模块。
答案 1 :(得分:0)
您可以创建一个Perl Function并在该调用中调用脚本来同步数据库。