Connectors / Files & object stores

CSV

source

CSV file source

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

FieldTypeDefaultDescription
path
required
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