Selecto.Output.Transformers.CSV (Selecto v0.4.5)

Copy Markdown

CSV transformer for Selecto query results.

Converts query results to CSV format with configurable options:

  • Headers: Include/exclude column headers
  • Delimiter: Custom field separators (comma, tab, semicolon, etc.)
  • Quoting: Proper escaping for special characters
  • Null handling: Custom null value representation
  • Streaming: Efficient processing for large datasets

Options

  • :headers - Include headers (default: true)
  • :delimiter - Field separator (default: ",")
  • :quote_char - Quote character (default: """)
  • :null_value - Null representation (default: "")
  • :force_quotes - Quote all fields (default: false)
  • :line_ending - Line ending style (default: "\n")

Examples

iex> Selecto.Output.Transformers.CSV.transform(
...>   [["Alice", 25], ["Bob", 30]],
...>   ["name", "age"],
...>   ["name", "age"]
...> )
{:ok, "name,age\nAlice,25\nBob,30\n"}

iex> Selecto.Output.Transformers.CSV.transform(
...>   [["John, Jr.", nil]],
...>   ["full_name", "age"],
...>   ["full_name", "age"],
...>   delimiter: ";", null_value: "N/A"
...> )
{:ok, "full_name;age\n\"John, Jr.\";N/A\n"}

Summary

Functions

Transform query results to CSV format with streaming support.

Transform query results to CSV format.

Functions

stream_transform(rows, columns, aliases, opts \\ [])

Transform query results to CSV format with streaming support.

Returns a stream that yields CSV lines (including header if configured). Efficient for large datasets as it processes rows one at a time.

transform(rows, columns, aliases, opts \\ [])

Transform query results to CSV format.

Returns the complete CSV as a string with optional headers and properly escaped values.