pg_curl
封装CURL,执行各种用URL传输数据的操作
Module:
Categories:
扩展总览
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依赖:无
最新版本
扩展安装
使用 pig
命令行工具安装 pg_curl
扩展:
pig ext install pg_curl
使用 Pigsty剧本 安装 pg_curl 扩展:
./pgsql.yml -t pg_extension -e '{"pg_extensions": ["pg_curl"]}' # -l <集群名>
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 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$;