关于 convert-file
指导使用 DuckDB 转换支持格式的数据文件。它会解析输入和输出路径、按扩展名选择格式选项、执行转换并报告结果。
主要功能
- 01解析输入和输出路径
- 02根据输出扩展名判断格式
- 03支持表格、JSON 和空间格式
- 04处理远程输入和扩展
- 05设置分区或压缩选项
适用场景
- 01将 CSV 文件转换为 Parquet
- 02导出为 JSONL 或 TSV
- 03转换 GeoJSON 等空间文件
- 04为转换输出设置分区或压缩
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ duckdb/ duckdb-skills --skill convert-file安装后在 Claude Code 中输入/convert-file确认已加载。
详细介绍
你正在使用 DuckDB 帮助用户将数据文件从一种格式转换为另一种格式。
输入文件:$0
输出文件:${1:-}
步骤 1 — 确定输入和输出
输入:$0。如果它是裸文件名(不包含 /),则使用 find "$PWD" -name "$0" -not -path '*/.git/*' 2>/dev/null | head -1 将其解析为完整路径。
输出:如果提供了 $1,则将其用作输出路径。否则,默认使用与输入文件同名的文件,并将扩展名设为 .parquet(例如,data.csv → data.parquet)。
根据输出文件扩展名推断输出格式:
| 扩展名 | 格式子句 |
|---|---|
.parquet、.pq | (默认,无需子句) |
.csv | (FORMAT csv, HEADER) |
.tsv | (FORMAT csv, HEADER, DELIMITER '\t') |
.json | (FORMAT json, ARRAY true) |
.jsonl、.ndjson | (FORMAT json, ARRAY false) |
.xlsx | (FORMAT xlsx) — 需要 INSTALL excel; LOAD excel; |
.geojson | (FORMAT GDAL, DRIVER 'GeoJSON') — 需要 LOAD spatial; |
.gpkg | (FORMAT GDAL, DRIVER 'GPKG') — 需要 LOAD spatial; |
.shp | (FORMAT GDAL, DRIVER 'ESRI Shapefile') — 需要 LOAD spatial; |
步骤 2 — 转换
运行一条 DuckDB 命令。根据输入和输出格式,按需在前面添加扩展加载语句。
duckdb -c "
<EXTENSION_LOADS>
COPY (FROM '<INPUT_PATH>') TO '<OUTPUT_PATH>' <FORMAT_CLAUSE>;
"
对于远程输入(s3://、https:// 等),在前面添加与 read-file 相同的协议设置:
| 协议 | 前置语句 |
|---|---|
s3:// | LOAD httpfs; CREATE SECRET (TYPE S3, PROVIDER credential_chain); |
gs:// / gcs:// | LOAD httpfs; CREATE SECRET (TYPE GCS, PROVIDER credential_chain); |
https:// / http:// | LOAD httpfs; |
如果用户提到分区(例如,“按年份分区”),则在格式子句中添加 PARTITION_BY (col)。此功能仅适用于 Parquet 和 CSV 输出。
如果用户提到压缩(例如,“使用 zstd”),则为 Parquet 输出添加 CODEC 'zstd'。
步骤 3 — 报告结果
成功时,报告:
- 输入文件及检测到的格式
- 输出文件、格式和大小(
ls -lh) - 行数(如果能快速计算)
失败时:
duckdb: command not found→ 委托给/duckdb-skills:install-duckdb- 缺少扩展 → 安装该扩展并重试
- 输入解析错误 → 建议用户检查输入格式,或先尝试
/duckdb-skills:read-file查看文件内容
评论
支持 Markdown