Postgres版本:10
我想创建一个以url作为参数的函数,执行curl
命令并返回加载的数据。像这样:
CREATE OR REPLACE FUNCTION get_content_from_url(url text) RETURNS text LANGUAGE plpgsql AS $$
BEGIN
RETURN PROGRAM 'curl ' + url;
END
$$;
这可能吗?
我该如何做到这一点?
更新
我也尝试过以下plsh功能:
CREATE FUNCTION load_file_content (text) RETURNS text AS '
#!/bin/bash
curl $1
' LANGUAGE plsh;
但是当我执行SELECT load_file_content('http://...');
时,我得到以下错误结果:
错误:load_file_content:%收到的总百分比%Xferd平均速度时间时间当前时间 Dload上载总左转速度 0 0 0 0 0 0 0 0 - : - : - - : - : - - : - : - 0 100 20745 100 20745 0 0 669k 0 - : - : - - : - : - - : - : - 675k SQL状态:XX000
并遵循plperl函数:
CREATE FUNCTION load_file_content (text) RETURNS text AS $$
my $result = "";
my $result .= qx(curl $1);
return $result;
$$ LANGUAGE plperl;
在尝试创建函数时会导致以下错误:
错误:'引用执行(``,qx)'被第3行的操作掩码捕获。
答案 0 :(得分:2)
我找到了解决方案:
CREATE FUNCTION load_file_content (text) RETURNS text AS '
#!/bin/bash
curl $1 2>/dev/null
' LANGUAGE plsh;