Install
cargo install faucet-cli --features source-csv faucet init --source csv
# Cargo.toml — use it as a library cargo add faucet-source-csv
Starter config
source:
type: csv
config:
path: "" # REQUIRED — Path to the CSV file.
# has_headers: true # Whether the file has a header row.
# delimiter: 44 # Field delimiter byte.
# quote: 34 # Quote character byte.
# flexible: false # Whether to tolerate rows with a field count that differs from the header (or from the first data row when header-less).
# null_values: [] # Fields equal to any of these strings decode as JSON `null` instead of a string (default: none, every field is a string).
# batch_size: 1000 # Records per emitted `StreamPage`.
# compression: null # User-facing compression config.
Capabilities
| Replay | Non-deterministic replay |
|---|---|
| Exactly-once replay | No |
| Incremental | No |
| Dataset discovery | No |
| Reports lag | No |
| Compression | Yes |
Config fields
| Field | Type | Default | Description |
|---|---|---|---|
pathrequired | string | — | Path to the CSV file. |
has_headers | boolean | true | Whether the file has a header row. Defaults to true. |
delimiter | integer | 44 | Field delimiter byte. Defaults to b','. |
quote | integer | 34 | Quote character byte. Defaults to b'"'. |
flexible | boolean | false | Whether to tolerate rows with a field count that differs from the header (or from the first data row when header-less). Defaults to false (strict). |
null_values | array | [] | Fields equal to any of these strings decode as JSON null instead of a string (default: none, every field is a string). [""] treats empty fields as null; sentinels such as "NULL" or "#N/A" can be listed. Headers are never mapped, and a quoted empty field is mapped like an unquoted one (the reader does not report quoting per field). |
batch_size | integer | 1000 | Records per emitted StreamPage. Rows are parsed line-by-line from a tokio BufReader and yielded whenever the buffer reaches this size. Defaults to DEFAULT_BATCH_SIZE. |
compression | string | object | auto | Compression codec for the input file. Defaults to CompressionConfig::Auto — .gz / .zst suffix selects gzip / zstd. Requires the crate-local compression feature. |
Get started
Your first pipeline runs in five minutes.
Install the CLI, scaffold a config, and move real data — nothing external to stand up.
curl -LsSf https://github.com/faucet-hq/faucet-stream/releases/latest/download/faucet-cli-installer.sh | sh brew install faucet-hq/faucet-stream/faucet-cli