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;