CSV.jl reads and writes comma-separated and other delimited text data in Julia. It implements the Tables.jl interface.
Install the registered release from the Julia REPL:
] add CSVCSV.jl 1.0 requires Julia 1.10 or later. See the 0.10 to 1.0 migration guide before you update an existing application.
using CSV
file = CSV.File("input.csv")
CSV.write("output.csv", file)Use CSV.read("input.csv", DataFrame) after you load DataFrames.jl. Use
CSV.Rows to process one row at a time, CSV.Chunks to process batches, or
CSV.lazy to index a source before you choose which cells to parse.
- Stable documentation describes the latest registered release.
- Development documentation
describes the
mainbranch. - 1.0 release notes summarize what changed.
Use GitHub Issues for bug reports, feature requests, and questions.
The CSV.jl 1.0 internal rewrite contains substantial generative-AI contributions. Claude drove the initial rewrite. Codex performed review, fixes, documentation, and validation. Human maintainers must hand-review these changes and own the final approval.
- DelimitedFiles is a Julia standard library for simple, homogeneous delimited matrices.
- CSVFiles.jl provides FileIO.jl
loadandsaveintegration. - DLMReader.jl reads delimited data and integrates with InMemoryDatasets.jl.
CSV.jl uses shared string columns from DataStrings.jl. With
DataDecimals.jl loaded, an explicitly requested decimal type such as
types=Dict(:amount => DataDecimals.Decimal64{2}) parses exactly; CSV does not
infer decimal types, and fractional numbers infer as Float64.