Postgresql:创建从网址加载数据的FUNCTION

时间:2018-04-27 23:43:35

标签: postgresql

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行的操作掩码捕获。

1 个答案:

答案 0 :(得分:2)

我找到了解决方案:

CREATE FUNCTION load_file_content (text) RETURNS text AS '
#!/bin/bash
curl $1 2>/dev/null
' LANGUAGE plsh;