Qsv data-convert
Convert between CSV, TSV, Excel, JSONL, Parquet, and other tabular formats
install
source · Clone the upstream repo
git clone https://github.com/dathere/qsv
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/dathere/qsv "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.claude/skills/skills/data-convert" ~/.claude/skills/dathere-qsv-data-convert && rm -rf "$T"
manifest:
.claude/skills/skills/data-convert/SKILL.mdsource content
Data Convert
Convert tabular data files between formats.
Cowork note: If relative paths don't resolve, call
andmcp__qsv__qsv_get_working_dirto sync the working directory.mcp__qsv__qsv_set_working_dir
Supported Conversions
Input Formats (auto-detected)
- CSV (
), TSV (.csv
/.tsv
), SSV (.tab
).ssv - Excel (
,.xlsx
,.xls
,.xlsm
).xlsb - OpenDocument (
).ods - JSONL/NDJSON (
,.jsonl
).ndjson - Snappy-compressed variants (
, etc.).csv.sz
Output Formats
| Format | Command | Extension |
|---|---|---|
| CSV | (identity) or | |
| TSV | | |
| JSONL | | |
| JSON | | |
| Parquet | (core tool) | |
| XLSX | (via ) | |
| ODS | (via ) | |
| SQLite | (via ) | |
| PostgreSQL | (via ) | N/A |
| Data Package | (via ) | |
Steps
-
Index: Run
on the file for fast random access in subsequent steps.mcp__qsv__qsv_index -
Detect source format: Run
to identify the input format, delimiter, and encoding.mcp__qsv__qsv_sniff -
Convert: Use the appropriate command based on the target format:
-
To CSV (from Excel/JSONL): The MCP server handles this automatically when you pass non-CSV files to any qsv tool. Use
withmcp__qsv__qsv_command
for explicit control over sheet selection.excel -
To TSV: Use
withmcp__qsv__qsv_command
,command: "fmt"
.options: {"out-delimiter": "\t"} -
To JSONL: Use
withmcp__qsv__qsv_command
.command: "tojsonl" -
To Parquet (single file): Use
(core tool) — auto-generates stats cache and Polars schema for optimal type inference.mcp__qsv__qsv_to_parquet -
To Parquet (batch): Use
withmcp__qsv__qsv_command
,command: "to"
,subcommand: "parquet"
for batch conversion with explicit compression control.destination: "output_dir" -
To XLSX: Use
withmcp__qsv__qsv_command
,command: "to"
,subcommand: "xlsx"
.destination: "output.xlsx" -
To ODS: Use
withmcp__qsv__qsv_command
,command: "to"
,subcommand: "ods"
.destination: "output.ods" -
To SQLite: Use
withmcp__qsv__qsv_command
,command: "to"
,subcommand: "sqlite"
.destination: "output.db" -
To PostgreSQL: Use
withmcp__qsv__qsv_command
,command: "to"
,subcommand: "postgres"
.destination: "connection_string" -
To Data Package: Use
withmcp__qsv__qsv_command
,command: "to"
,subcommand: "datapackage"
.destination: "output.json"
-
-
Verify output: Run
on the output (if CSV-based) to confirm row count matches input.mcp__qsv__qsv_count
Notes
- Excel conversion: Use
to specify which sheet to convert (default: first sheet)--sheet - JSONL output respects data types from stats cache - run
first for better type inferencestats --stats-jsonl - Parquet conversion preserves data types efficiently and produces smaller files
- For CSV -> CSV reformatting (change delimiter, quoting), use
commandfmt - Large Excel files may take longer to convert - the MCP server handles this transparently
- When converting multiple sheets from Excel, run
withexcel
for each sheet--sheet