mcpField
C
convert-file

convert-file

github.com/duckdb数据与数据库613797 次安装28 周前更新
代码仓库

关于 convert-file

指导使用 DuckDB 转换支持格式的数据文件。它会解析输入和输出路径、按扩展名选择格式选项、执行转换并报告结果。

主要功能

  1. 01解析输入和输出路径
  2. 02根据输出扩展名判断格式
  3. 03支持表格、JSON 和空间格式
  4. 04处理远程输入和扩展
  5. 05设置分区或压缩选项

适用场景

  1. 01将 CSV 文件转换为 Parquet
  2. 02导出为 JSONL 或 TSV
  3. 03转换 GeoJSON 等空间文件
  4. 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