A simple and extremely fast CSV parsing and dumping library for Elixir with customizable parsers.
NimbleCSV is a CSV parsing and dumping library for Elixir that emphasizes simplicity and high performance. It allows developers to define custom parsers using binary patterns for efficiency and supports both eager and lazy parsing modes. The library solves the need for fast, flexible CSV handling in Elixir applications without imposing data transformation rules.
Elixir developers who need to parse or generate CSV data efficiently, especially those working with large files or requiring custom parsing logic.
Developers choose NimbleCSV for its speed, simplicity, and composability—it avoids bloat by focusing on parsing raw data and letting users handle transformations, making it ideal for performance-sensitive and customizable CSV processing.
A simple and fast CSV parsing and dumping library for Elixir
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Allows defining parsers with specific separators and escapes using NimbleCSV.define, enabling efficient binary pattern matching for tailored CSV formats, as shown in the README example with custom tab-separated parsers.
Provides parse_stream for lazy parsing of large files, integrating seamlessly with Elixir's Stream module for memory-efficient processing, demonstrated in the README with file streaming pipelines.
Focuses solely on parsing raw data without imposing casting or header management, letting developers build transformations post-parsing, which aligns with Elixir's functional composition style.
Ships with a built-in parser for standard CSV formats using commas and double-quotes, reducing initial setup for common use cases, as highlighted in the README with aliasing examples.
Lacks built-in type inference or conversion; developers must manually handle integer parsing, date conversion, etc., as admitted in the philosophy where it avoids data transformation.
Requires additional code to manage CSV headers, unlike libraries with out-of-the-box header support, forcing extra steps for common tasks like mapping rows to structs.
Focuses on speed and simplicity, providing minimal error messages or recovery for malformed CSV files, which can complicate debugging in production environments with irregular data.