如何从 postgres 函数运行 python 或 javascript 文件?
我有两个结构完全不同的 postgres 数据库。
但我需要同步这两个数据库。
我会用任何语言(python、java、javascript、node)编写从本地数据库读取数据并写入服务器数据库的脚本。
但主要问题是:
我不知道如何从 postgres 过程或函数中调用该脚本。
所以问题是:
我们如何从 postgres 过程中调用或运行任何脚本?
最佳答案
使用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模块。
关于javascript - 从 postgres 函数运行 python 或 javascript 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33317582/