pg_curl

封装CURL,执行各种用URL传输数据的操作

扩展总览

PIGSTY 第三方扩展: pg_curl : 封装CURL,执行各种用URL传输数据的操作

基本信息

  • 扩展编号: 4090
  • 扩展名称: pg_curl
  • 标准包名: pg_curl
  • 扩展类目: UTIL
  • 开源协议: MIT
  • 官方网站: https://github.com/RekGRpth/pg_curl
  • 编程语言: C
  • 其他标签: 无
  • 备注信息: 无

元数据

  • 默认版本: 2.4
  • PG大版本: 17,16,15,14,13
  • 动态加载: 无需动态加载
  • 需要DDL: 需要执行 CREATE EXTENSION DDL
  • 可重定位: 无法安装至任意模式下
  • 信任程度: 未受信任,创建扩展需要超级用户权限
  • 所需模式: 无
  • 所需扩展: 无

软件包

  • RPM仓库:PIGSTY
  • RPM包名:pg_curl_$v*
  • RPM版本:2.4
  • RPM依赖:无
  • DEB仓库:PIGSTY
  • DEB包名:postgresql-$v-pg-curl
  • DEB版本:2.4
  • DEB依赖:无

最新版本

系统 架构 PG17 PG16 PG15 PG14 PG13
el8 x86_64 pg_curl_17
PIGSTY 2.4
pg_curl_16
PIGSTY 2.4
pg_curl_15
PIGSTY 2.4
pg_curl_14
PIGSTY 2.4
pg_curl_13
PIGSTY 2.4
el8 aarch64 pg_curl_17
PIGSTY 2.4
pg_curl_16
PIGSTY 2.4
pg_curl_15
PIGSTY 2.4
pg_curl_14
PIGSTY 2.4
pg_curl_13
PIGSTY 2.4
el9 x86_64 pg_curl_17
PIGSTY 2.4
pg_curl_16
PIGSTY 2.4
pg_curl_15
PIGSTY 2.4
pg_curl_14
PIGSTY 2.4
pg_curl_13
PIGSTY 2.4
el9 aarch64 pg_curl_17
PIGSTY 2.4
pg_curl_16
PIGSTY 2.4
pg_curl_15
PIGSTY 2.4
pg_curl_14
PIGSTY 2.4
pg_curl_13
PIGSTY 2.4
d12 x86_64 postgresql-17-pg-curl
PIGSTY 2.4
postgresql-16-pg-curl
PIGSTY 2.4
postgresql-15-pg-curl
PIGSTY 2.4
postgresql-14-pg-curl
PIGSTY 2.4
postgresql-13-pg-curl
PIGSTY 2.4
d12 aarch64 postgresql-17-pg-curl
PIGSTY 2.4
postgresql-16-pg-curl
PIGSTY 2.4
postgresql-15-pg-curl
PIGSTY 2.4
postgresql-14-pg-curl
PIGSTY 2.4
postgresql-13-pg-curl
PIGSTY 2.4
u22 x86_64 postgresql-17-pg-curl
PIGSTY 2.4
postgresql-16-pg-curl
PIGSTY 2.4
postgresql-15-pg-curl
PIGSTY 2.4
postgresql-14-pg-curl
PIGSTY 2.4
postgresql-13-pg-curl
PIGSTY 2.4
u22 aarch64 postgresql-17-pg-curl
PIGSTY 2.4
postgresql-16-pg-curl
PIGSTY 2.4
postgresql-15-pg-curl
PIGSTY 2.4
postgresql-14-pg-curl
PIGSTY 2.4
postgresql-13-pg-curl
PIGSTY 2.4
u24 x86_64 postgresql-17-pg-curl
PIGSTY 2.4
postgresql-16-pg-curl
PIGSTY 2.4
postgresql-15-pg-curl
PIGSTY 2.4
postgresql-14-pg-curl
PIGSTY 2.4
postgresql-13-pg-curl
PIGSTY 2.4
u24 aarch64 postgresql-17-pg-curl
PIGSTY 2.4
postgresql-16-pg-curl
PIGSTY 2.4
postgresql-15-pg-curl
PIGSTY 2.4
postgresql-14-pg-curl
PIGSTY 2.4
postgresql-13-pg-curl
PIGSTY 2.4

扩展安装

使用 pig 命令行工具安装 pg_curl 扩展:

pig ext install pg_curl

使用 Pigsty剧本 安装 pg_curl 扩展:

./pgsql.yml -t pg_extension -e '{"pg_extensions": ["pg_curl"]}' # -l <集群名>

YUM仓库 手工安装 pg_curl RPM 包:

dnf install pg_curl_17*;
dnf install pg_curl_16*;
dnf install pg_curl_15*;
dnf install pg_curl_14*;
dnf install pg_curl_13*;

APT仓库 手工安装 pg_curl DEB 包:

apt install postgresql-17-pg-curl;
apt install postgresql-16-pg-curl;
apt install postgresql-15-pg-curl;
apt install postgresql-14-pg-curl;
apt install postgresql-13-pg-curl;

使用以下 SQL 命令在已经安装此扩展插件的 PG 集群上 启用 pg_curl 扩展:

CREATE EXTENSION pg_curl;

使用方法

CREATE EXTENSION pg_curl;

Perform HTTP Get:

-- wrap curl http get
CREATE OR REPLACE FUNCTION get(url TEXT) RETURNS TEXT LANGUAGE SQL AS $BODY$
WITH s AS (SELECT
               curl_easy_reset(),
               curl_easy_setopt_url(url),
               curl_easy_perform(),
               curl_easy_getinfo_data_in()
) SELECT convert_from(curl_easy_getinfo_data_in, 'utf-8') FROM s;
$BODY$;


SELECT get('https://www.postgresql.org/');

Perform Email SMTP:

CREATE OR REPLACE FUNCTION email(url TEXT, username TEXT, password TEXT, subject TEXT, sender TEXT, recipient TEXT, body TEXT, type TEXT) RETURNS TEXT LANGUAGE SQL AS $BODY$
    WITH s AS (SELECT
        curl_easy_reset(),
        curl_easy_setopt_mail_from(sender),
        curl_easy_setopt_password(password),
        curl_easy_setopt_url(url),
        curl_easy_setopt_username(username),
        curl_header_append('From', sender),
        curl_header_append('Subject', subject),
        curl_header_append('To', recipient),
        curl_mime_data(body, type:=type),
        curl_recipient_append(recipient),
        curl_easy_perform(),
        curl_easy_getinfo_header_in()
    ) SELECT curl_easy_getinfo_header_in FROM s;
$BODY$;

Perform FTP download:

CREATE OR REPLACE FUNCTION download(url TEXT, username TEXT, password TEXT) RETURNS BYTEA LANGUAGE SQL AS $BODY$
    WITH s AS (SELECT
        curl_easy_reset(),
        curl_easy_setopt_password(password),
        curl_easy_setopt_url(url),
        curl_easy_setopt_username(username),
        curl_easy_perform(),
        curl_easy_getinfo_data_in()
    ) SELECT curl_easy_getinfo_data_in FROM s;
$BODY$;




最后修改 2025-03-07: routine update (2106723)