Skip to main content

Read CSV

Controlled node

Overview

The Read CSV node parses CSV files from your project library into structured data formats. It supports two output modes: a list of lists (raw row arrays) or a list of objects (dictionaries mapped to column headers). This node is essential for importing tabular data into your workflows for processing, transformation, or database insertion.

Inputs

InputTypeDescriptionDefault
RunEventTriggers the CSV parsing operation.-
FileFileSourceThe CSV file to read from the library. Accepts text/csv mime type.-

Outputs

OutputTypeDescription
DoneEventFires when the CSV has been successfully parsed and output is ready.
OutputDataThe parsed CSV data. Returns either a list of lists (arrays) or a list of objects depending on the Dictionary Result setting.

Properties

PropertyTypeDescriptionDefault
Dictionary ResultBooleanWhen enabled, outputs data as a list of objects where keys are derived from the CSV header row. When disabled, outputs a list of lists (raw row arrays).false

Runtime Behavior and Defaults

The Read CSV node is a controlled node that executes when triggered by the Run event input.

File Handling:

  • Accepts either a single file object or an array of files (uses the first file in the array)
  • Supports legacy FileSource formats including checked document selections
  • Retrieves files from project storage using the runtime project ID

Parsing Logic:

  • Automatically detects and uses the first row as headers when Dictionary Result is enabled
  • If Dictionary Result is true and headers are present, each row is converted to an object: { header1: value1, header2: value2, ... }
  • If Dictionary Result is false or headers are missing, outputs raw arrays: [value1, value2, ...]
  • Handles both snappy-compressed and uncompressed storage formats
  • Returns 'undefined' if the file is missing, project ID is unavailable, or parsing fails

Error Handling:

  • Outputs 'undefined' and sets internal error state if:
    • No file is provided
    • Project ID cannot be determined
    • File metadata is missing from the database
    • CSV parsing fails or returns no rows

Example

Basic CSV Reading

Connect a file selection node or a node that outputs file references (like Find Library Files or Get Library Files) to the File input, then trigger with a Start or Event node.

[Start] → [Read CSV] → [Show]

File: my-data.csv

Dictionary Mode for Database Insertion

Enable Dictionary Result when you need object-style output for nodes like Insert Into Database that expect keyed data:

[Start] → [Read CSV] → [Insert Into Database]
↓ ↓
File: users.csv Table: users
Dictionary: true Rows: {{output}}

In this example, if users.csv contains:

name,email,age
John,john@example.com,30
Jane,jane@example.com,25

The Output will be:

[
{"name": "John", "email": "john@example.com", "age": "30"},
{"name": "Jane", "email": "jane@example.com", "age": "25"}
]
Large Files

For CSV files larger than 100MB or with millions of rows, consider using the Read CSV Streamed node instead, which processes data in batches to manage memory efficiently.