convert-file について
DuckDB を使った対応形式間のデータファイル変換を案内するスキルです。入出力パスを解決し、形式に応じたオプションを選んで変換を実行し、結果を報告します。
主な機能
- 01入出力パスの解決
- 02出力拡張子による形式の判定
- 03表形式、JSON、空間形式への対応
- 04リモート入力と拡張機能の処理
- 05パーティションや圧縮の指定
活用シーン
- 01CSV ファイルを Parquet に変換
- 02JSONL や TSV としてエクスポート
- 03GeoJSON などの空間ファイルを変換
- 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を試して内容を確認するようユーザーに提案します