调研探索
用 DuckDB 安装或更新扩展(支持核心与社区仓库)
当需要通过命令行安装或更新 DuckDB 扩展(含指定仓库的扩展)时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 49/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
用 DuckDB 安装或更新扩展(支持核通用
解决思路
- 用 `DUCKDB=$(command -v duckdb)` 定位 DuckDB 可执行文件;若未找到,提示用户先安装(macOS: `brew install duckdb`;Linux: `curl -fsSL https://install.duckdb.org | sh`;Windows: `winget install DuckDB.cli`),然后停止。
- 检查参数中是否含 `--update`:若有则从参数列表移除并设为 update 模式,否则为 install 模式。
- install 模式下解析每个扩展参数:含 `@` 则按 `@` 拆分为 `INSTALL <name> FROM <repo>;`,否则为 `INSTALL <name>;`。
- install 模式下将所有语句合并到一次 DuckDB 调用执行:`"$DUCKDB" :memory: -c "INSTALL <ext1>; INSTALL <ext2> FROM <repo2>; ..."`。
- update 模式下先检查 DuckDB CLI 是否为最新:用 `CURRENT=$(duckdb --version | grep -oE '[0-9]+\.[0-9]+\.[0-9]+')` 和 `LATEST=$(curl -fsSL https://duckdb.org/data/latest_stable_version.txt)` 获取版本。
- 若 `CURRENT` == `LATEST`,报告 DuckDB CLI 已是最新;若不同,询问用户是否升级,用户同意后按平台执行升级命令:macOS(有 brew)用 `brew upgrade duckdb`,Linux 用 `curl -fsSL https://install.duckdb.org | sh`,Windows 用 `winget upgrade DuckDB.cli`。
- update 模式下更新扩展:无扩展名时执行 `"$DUCKDB" :memory: -c "UPDATE EXTENSIONS;"` 更新全部;有扩展名时忽略 `@repo`,执行 `"$DUCKDB" :memory: -c "UPDATE EXTENSIONS (<ext1>, <ext2>, ...);"`。
- 调用完成后报告成功或失败。
适用边界 · 注意事项
- 未安装 DuckDB CLI 时(需先安装再运行)。
- 需要图形界面或非命令行方式管理扩展时。