在DuckDB中使用http(s)代理

httpfs插件支持代理,文档 https://duckdb.org/docs/stable/core_extensions/httpfs/https 介绍了两种方法

方法1:

复制代码
CREATE SECRET http_proxy ( TYPE http, HTTP_PROXY 'http://proxy.com:8080');

方法2:

复制代码
set http_proxy='http://proxy.com:8080';

load httpfs;后,按照任意一种方法设置,原来无法访问的互联网地址就能访问了。

比如安装duckdb插件。

如果不设置

复制代码
D install tpch;
IO Error:
Failed to download extension "tpch" at URL "http://extensions.duckdb.org/v1.4.1/linux_arm64/tpch.duckdb_extension.gz"
Extension "tpch" is an existing extension.

如果设置

复制代码
CREATE SECRET http_proxy ( TYPE http, HTTP_PROXY 'http://proxy.com:8080');
┌─────────┐
│ Success │
│ boolean │
├─────────┤
│ true    │
└─────────┘

D install tpch;
100% ▕██████████████████████████████████████▏ (00:00:04.77 elapsed) 

也可以把网络文件保存到表中

复制代码
D create table t as from read_blob('https://www.miit.gov.cn/cms_files/filemanager/1226211233/attach/20259/795cf87158b0441ea697899f4cf626c4.xlsx');
D select count(*) from t;
┌──────────────┐
│ count_star() │
│    int64     │
├──────────────┤
│      1       │
└──────────────┘
D describe t;
┌───────────────┬──────────────────────────┬─────────┬─────────┬─────────┬─────────┐
│  column_name  │       column_type        │  null   │   key   │ default │  extra  │
│    varchar    │         varchar          │ varchar │ varchar │ varchar │ varchar │
├───────────────┼──────────────────────────┼─────────┼─────────┼─────────┼─────────┤
│ filename      │ VARCHAR                  │ YES     │ NULL    │ NULL    │ NULL    │
│ content       │ BLOB                     │ YES     │ NULL    │ NULL    │ NULL    │
│ size          │ BIGINT                   │ YES     │ NULL    │ NULL    │ NULL    │
│ last_modified │ TIMESTAMP WITH TIME ZONE │ YES     │ NULL    │ NULL    │ NULL    │
└───────────────┴──────────────────────────┴─────────┴─────────┴─────────┴─────────┘
D select filename,size from t;
┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────┬───────┐
│                                                  filename                                                   │ size  │
│                                                   varchar                                                   │ int64 │
├─────────────────────────────────────────────────────────────────────────────────────────────────────────────┼───────┤
│ https://www.miit.gov.cn/cms_files/filemanager/1226211233/attach/20259/795cf87158b0441ea697899f4cf626c4.xlsx │ 92279 │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────┴───────┘
copy (select content from t) to 'car.blob';

注意,有的功能比如rusty_sheet需要持久的SECRET ,否则仍无法访问。

复制代码
-- 按照上述任意一种设置后:
from read_sheet('https://www.miit.gov.cn/cms_files/filemanager/1226211233/attach/20259/795cf87158b0441ea697899f4cf626c4.xlsx',range='2:');
Binder Error:
https://www.miit.gov.cn/cms_files/filemanager/1226211233/attach/20259/795cf87158b0441ea697899f4cf626c4.xlsx: IO Error: SSL connection failed error for HTTP HEAD to 'https://www.miit.gov.cn/cms_files/filemanager/1226211233/attach/20259/795cf87158b0441ea697899f4cf626c4.xlsx'

LINE 1: from read_sheet('https://www.miit.gov.cn/cms_files/filemanager...
             ^


CREATE persistent SECRET http_proxy( TYPE http, HTTP_PROXY 'http://proxy.com:8080');
┌─────────┐
│ Success │
│ boolean │
├─────────┤
│ true    │
└─────────┘

D from read_sheet('https://www.miit.gov.cn/cms_files/filemanager/1226211233/attach/20259/795cf87158b0441ea697899f4cf626c4.xlsx',range='2:');
┌─────────┬─────────┬──────────────────────┬───────────────────┬────────────────────┬───┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┐
│  地区   │  序号   │     车辆生产企业     │     车辆型号      │ 申报推广数\n(辆) │ ... │ 核定补助标准\n(万...  │ 应清算补助资金\n(...  │ 按整车企业取整后补...  │       核减原因       │
│ varchar │ varchar │       varchar        │      varchar      │       int64        │   │        double        │        double        │        int64         │       varchar        │
├─────────┼─────────┼──────────────────────┼───────────────────┼────────────────────┼───┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤

设置了持久SECRET后,它就保存到本地,不用每次打开DuckDB重新设置,若要取消设置,用drop persistent secret http_proxy;

相关推荐
Decay__7 小时前
05_MySQL 常用 SQL 大全 —— 诊断、管理、优化辅助 SQL 与三大系统库速查
运维·数据库·sql·mysql·架构
明天也要努力学习10 小时前
HTTP 协议的基本格式和 fiddler 的用法
网络协议·http·fiddler
紧跟先前的步伐10 小时前
Go AI Agent 实战 24|工具系统工程化收尾与阶段验收
人工智能·ai·golang·1024程序员节
吠品10 小时前
智谱开源 ZCode 之后,真正的考试才开始
单片机·嵌入式硬件·1024程序员节
日日大王学编程11 小时前
#Feed 流项目复盘:Redis 时间线缓存与 Outbox 消息可靠性设计
golang·1024程序员节
小徐不徐说12 小时前
C++ 接口与插件设计:从工厂注册到 Qt 动态插件
数据库·c++·qt·系统架构·程序设计
论文复现现场12 小时前
WRF、FEA 能用 L40S 加速吗?求解器检查、断点恢复与长期运行
java·数据库·算法·wrf·有限元分析·gpu计算·断点续算
Decay__13 小时前
04_MySQL DBA 日常运维手册 —— 会话管理、锁与阻塞、事务监控、慢查询与日志巡检
运维·数据库·sql·mysql·架构
cpolar技术支持14 小时前
网关加 gzip,同时开启 chunked,下载回来的包解不开:把两层编码的解压顺序与长度核对做成只读页
python·http·网络编程·socket·内网穿透
小嘉丶学长14 小时前
Day14 · 字典与集合
java·开发语言·网络·python·学习·1024程序员节