graph LR CSV_in[CSV/TSV] --> rush((rush)) Parquet_in[Parquet] --> rush JSON_in[JSON/JSONL] --> rush Excel_in[Excel] --> rush Arrow_in[Arrow IPC] --> rush DuckDB_in[DuckDB] --> rush SPSS_in[SPSS] --> rush Stata_in[Stata] --> rush SAS_in[SAS] --> rush SQLite_in[SQLite] --> rush FWF_in[FWF] --> rush RDS_in[RDS] --> rush ODS_in[ODS] --> rush FASTA_in[FASTA] --> rush FASTQ_in[FASTQ] --> rush YAML_in[YAML] --> rush TOML_in[TOML] --> rush XML_in[XML] --> rush rush --> CSV_out[CSV/TSV] rush --> Parquet_out[Parquet] rush --> JSON_out[JSON/JSONL] rush --> Excel_out[Excel] rush --> Arrow_out[Arrow IPC] rush --> DuckDB_out[DuckDB] rush --> SPSS_out[SPSS] rush --> Stata_out[Stata] rush --> SAS_out[SAS] rush --> SQLite_out[SQLite] rush --> RDS_out[RDS] rush --> ODS_out[ODS] rush --> FASTA_out[FASTA] rush --> FASTQ_out[FASTQ] rush --> YAML_out[YAML] rush --> TOML_out[TOML] rush --> XML_out[XML]
Supported formats
rush can read and write a wide range of data formats. The file extension determines which reader or writer is used automatically. Override with -F (input) or -O (output).
| Format | Extensions | Read | Write | Package |
|---|---|---|---|---|
| Delimited text | .csv, .tsv |
yes | yes | readr |
| Parquet | .parquet, .pq |
yes | yes | nanoparquet |
| JSON | .json |
yes | yes | jsonlite |
| JSON Lines | .jsonl, .ndjson |
yes | yes | jsonlite |
| Excel | .xlsx, .xls |
yes | yes | readxl / writexl |
| Arrow IPC | .arrow, .ipc, .feather |
yes | yes | arrow |
| DuckDB | .duckdb, .ddb |
yes | yes | duckdb |
| SPSS | .sav, .zsav, .por |
yes | yes | haven |
| Stata | .dta |
yes | yes | haven |
| SAS | .sas7bdat, .xpt |
yes | yes | haven |
| SQLite | .sqlite, .db |
yes | yes | RSQLite |
| Fixed-width | .fwf |
yes | no | readr |
| RDS | .rds |
yes | yes | readr |
| ODS | .ods |
yes | yes | readODS |
| FASTA | .fasta, .fa, .fna |
yes | yes | microseq |
| FASTQ | .fastq, .fq |
yes | yes | microseq |
| YAML | .yaml, .yml |
yes | yes | yaml |
| TOML | .toml |
yes | yes | RcppTOML |
| XML | .xml |
yes | yes | xml2 |
Any readable format can be converted to any writable format (through a data frame). The diagram below shows the full conversion graph:
Format-specific documentation
Each format has detailed documentation with examples:
- Delimited (CSV/TSV): delimiter control, format flags,
--head - Parquet: columnar storage via nanoparquet
- JSON / JSONL: nested data, flattening, streaming
- Excel / ODS: sheets, spreadsheets
- Arrow IPC: Feather / IPC format
- DuckDB / SQLite: multi-table databases, combining files
- Statistical (SPSS, Stata, SAS): labelled data via haven
- Bioinformatics (FASTA/FASTQ): sequence data
- Structured (YAML, TOML, XML, RDS, FWF): config files, serialization