Skip to main content

Read (Input)

Load data from files or databases into your workflow.

Palette nameRead (category Connect)
Type nameInput

Sockets​

SocketDirectionDescription
outputOutputLoaded data as a LazyFrame

Supported Formats​

CSV​

Comma-separated values and other delimited text files (.csv, .tsv, .tab, .txt).

Reading Modes:

ModeDescriptionBest For
ScanLazy loading, streams dataLarge files, memory efficiency
ReadEager loading, loads entire fileSmall files, when you need all data upfront

CSV Options:

OptionDefaultDescription
Source(required)Path to the CSV file
Separator,Field delimiter (comma, tab, pipe, etc.)
Has HeadertrueFirst row contains column names
Quote Character"Character used to quote fields
Encodingutf-8File encoding
Skip Rows0Number of rows to skip at the start
Skip Rows After Header0Rows to skip after the header row
N Rows(all)Limit number of rows to read
Infer Schema Length100Rows to sample for type inference
Try Parse DatesfalseAttempt to parse date columns
Ignore ErrorsfalseSkip rows with parsing errors
Truncate Ragged LinesfalseTruncate lines that are too long instead of erroring
Comment Prefix(none)Character that marks comment lines to skip
Null Values(none)String(s) to interpret as null
Decimal CommafalseUse comma as decimal separator (European format)
Low MemoryfalseReduce memory usage at cost of speed
RechunkfalseRechunk to contiguous memory after reading

Excel​

Microsoft Excel spreadsheet files (.xlsx, .xls, .xlsb).

Reading Mode:

Excel files only support eager reading (the entire file is loaded into memory). This is a limitation of the Excel format - unlike CSV or Parquet, Excel files cannot be lazily streamed.

Excel Options:

OptionDefaultDescription
Source(required)Path to the Excel file
Sheet Number1Sheet to read (1 = first sheet, 0 = all sheets)
Sheet Name(none)Alternative: specify sheet by name
Has HeadertrueFirst row contains column names
Infer Schema Length100Rows to sample for type inference
Drop Empty RowstrueOmit completely empty rows
Drop Empty ColumnstrueOmit empty columns with no headers
Error if EmptytrueRaise error if sheet contains no data
Sheet Selection

You can select a sheet either by number (1-indexed) or by name, but not both. If neither is specified, the first sheet is read.

Parquet​

Columnar binary format with embedded schema.

Reading Modes:

ModeDescriptionBest For
ScanLazy loading, predicate pushdownLarge files, memory efficiency
ReadEager loadingSmall files

Parquet Options:

OptionDefaultDescription
Source(required)Path to the Parquet file
N Rows(all)Limit number of rows to read
Columns(all)Specific columns to load
Use StatisticstrueUse file statistics for optimization
ParallelautoParallel reading strategy
Low MemoryfalseReduce memory usage at cost of speed
CachetrueCache scan result (scan mode only)
RechunkfalseRechunk to contiguous memory
Retries2Number of retries on I/O errors

Advanced Parquet Options:

OptionDefaultDescription
Row Index Name(none)Add a row index column with this name
Row Index Offset0Start row index at this value
Hive PartitioningfalseInfer partition columns from directory structure
Parse Hive DatestrueTry to parse date columns from Hive partitions

IPC / Arrow​

Apache Arrow's native binary format (.arrow, .ipc, .feather). Designed for zero-copy data sharing and maximum performance.

Reading Modes:

ModeDescriptionBest For
ScanLazy loading, memory-mappedLarge files, memory efficiency
ReadEager loadingSmall files

IPC Options:

OptionDefaultDescription
Source(required)Path to the Arrow file
N Rows(all)Limit number of rows to read
Memory MaptrueMemory-map the file for efficient access
CachetrueCache scan result (scan mode only)
Rechunkfalse / trueRechunk to contiguous memory (default differs by mode)
Retries2Number of retries on I/O errors

Advanced Options:

OptionDefaultDescription
Row Index Name(none)Add a row index column with this name
Row Index Offset0Start row index at this value
Hive PartitioningfalseInfer partition columns from directory structure
Parse Hive DatestrueTry to parse date columns from Hive partitions
Performance

IPC/Arrow is the fastest format for read/write operations. Use it for intermediate files in your workflow or for sharing data between applications that support Apache Arrow (DuckDB, Spark, R, Julia, etc.).

Avro​

Apache Avro binary format (.avro). A row-based format commonly used in big data ecosystems like Hadoop, Kafka, and Spark.

Reading Mode:

Avro files only support eager reading (the entire file is loaded into memory). Unlike IPC or Parquet, Avro does not support lazy scanning in Polars.

Avro Options:

OptionDefaultDescription
Source(required)Path to the Avro file
N Rows(all)Limit number of rows to read
Columns(all)Specific columns to load (by name or index)
When to Use Avro

Avro is ideal when:

  • Integrating with Hadoop, Kafka, or Spark pipelines
  • You need schema evolution support
  • Working with row-based data patterns
  • Interoperability with Java/JVM ecosystems is important

For pure performance within Sigilweaver Loom, consider IPC/Arrow or Parquet instead.

ODS​

OpenDocument Spreadsheet (.ods) files from LibreOffice and OpenOffice. Similar to Excel but uses an open standard format.

Reading Mode:

ODS files only support eager reading (the entire file is loaded into memory). Polars does not support lazy scanning or writing for ODS format - it is read-only.

ODS Options:

OptionDefaultDescription
Source(required)Path to the ODS file
Sheet ID1Which sheet to read (1-indexed, 0 = all sheets)
Sheet Name(none)Alternative to Sheet ID - read by name
Has HeadertrueFirst row contains column names
Columns(all)Specific columns to load (by name or index)
Infer Schema Length100Number of rows to scan for type inference
Drop Empty RowstrueRemove completely empty rows
Drop Empty ColstrueRemove completely empty columns
Raise If EmptytrueError if the sheet is empty
When to Use ODS

ODS is ideal when:

  • Working with LibreOffice or OpenOffice spreadsheets
  • You need an open standard alternative to Excel
  • Sharing data between open source office suites
  • Compatibility with government or academic systems using open formats

Note: ODS is read-only. Use the Write tool with Excel, CSV or Parquet to save data.

PostgreSQL​

Query data directly from PostgreSQL databases.

Connections:

KindCredentialsBest for
Local (client) connectionStored on your machine in the operating system's credential storePersonal databases, development
Hub connectionManaged by a Hub administrator and never shown to youShared databases, team environments

PostgreSQL Options:

OptionDefaultDescription
Connection(required)Select a configured database connection
Query(required)SQL query to execute

Setting Up Connections:

Connections are managed in Settings > Connections. See Managing Connections for details on creating and using database connections.

Security

Credentials are never stored in workflow files. The workflow keeps only a connection ID. When you export Python code or view the workflow JSON, credentials are stripped or replaced by placeholders.

Queries that contain write or DDL keywords (INSERT, UPDATE, DELETE, DROP, CREATE and similar) are rejected. Treat that as a safety net and give the database user read-only permissions.

Lazy Evaluation

PostgreSQL queries are lazily evaluated like file sources. The query is executed when you preview data or run the workflow, not when you configure the tool.

MySQL​

Query data directly from MySQL databases.

MySQL Options:

OptionDefaultDescription
Connection(required)Select a configured database connection
Query(required)SQL query to execute

Connection setup and security are the same as PostgreSQL. See Managing Connections for details.

SQLite​

Query data from SQLite database files.

SQLite Options:

OptionDefaultDescription
Database file(required)Path to a .db, .sqlite, .sqlite3 or .db3 file
Query(required)SQL query to execute
No connection needed

SQLite is file-based, so you pick the file directly instead of creating a connection. The file must be readable from where the Server runs, and its path is checked against the Server's file access rules (and your Hub file grants) like any other file input.

SQL Server​

Query data from Microsoft SQL Server databases. The type name is mssql.

SQL Server Options:

OptionDefaultDescription
Connection(required)Select a configured database connection
Query(required)SQL query to execute

Connection setup and security are the same as PostgreSQL. See Managing Connections for details.

JSON​

JSON data files. Sigilweaver Loom supports two JSON formats, auto-detected by file extension:

FormatExtensionsReading ModeDescription
Standard JSON.jsonEager (Read)Array of objects
NDJSON.jsonl, .ndjsonLazy (Scan)Newline-delimited JSON

JSON Options (standard .json):

OptionDefaultDescription
Source(required)Path to the JSON file
Infer Schema Length100Rows to sample for type inference

NDJSON Options (.jsonl, .ndjson):

OptionDefaultDescription
Source(required)Path to the NDJSON file
Infer Schema Length100Rows to sample for type inference
N Rows(all)Limit number of rows to read
Batch Size(default)Processing batch size
Low MemoryfalseReduce memory usage at cost of speed
RechunkfalseRechunk to contiguous memory
Ignore ErrorsfalseSkip rows with parsing errors
NDJSON for Large Files

If your JSON data is large, use NDJSON format (.jsonl or .ndjson) for lazy streaming support. Standard .json files must be loaded entirely into memory.

YXDB​

YXDB database files (.yxdb). Read using SigilYX, a high-performance Rust-based reader.

Reading Mode:

YXDB files are read eagerly (the entire file is loaded into memory). The row-based LZF compression used by the format prevents partial reads or predicate pushdown. The result is wrapped in a LazyFrame for workflow compatibility, so subsequent operations (filter, select, join) are still composed lazily.

YXDB Options:

OptionDefaultDescription
Source(required)Path to the YXDB file
N Rows(all)Limit number of rows to read
YXDB Support

Sigilweaver Loom supports all 17 YXDB field types including Bool, Int16/32/64, Float, Double, FixedDecimal, String/WString/VString/VWString, Date, Time, DateTime, Blob, and SpatialObj. Blob and SpatialObj fields are read as strings.

QVD​

QVD (QlikView Data) files (.qvd). Read using OpenQVD, a Rust-based reader for the QlikView and Qlik Sense data format.

Reading Mode:

QVD files are read eagerly (the entire file is loaded into memory) and wrapped in a LazyFrame for workflow compatibility, so subsequent operations (filter, select, join) are still composed lazily.

QVD Options:

OptionDefaultDescription
Source(required)Path to the QVD file
Number of Rows(all)Limit number of rows to read
QVD Support

QVD is the native storage format produced by QlikView and Qlik Sense. Values are decoded into Polars types (integers, floats, and strings). QVD has no native boolean type, so boolean-like fields surface as integers or strings depending on how they were stored.

Configuration​

  1. Add a Read tool to the canvas
  2. Select the data source type:
    • File sources: CSV, Excel, Parquet, IPC/Arrow, Avro, ODS, JSON/NDJSON, YXDB, or QVD
    • Database sources: PostgreSQL, MySQL, SQLite, or SQL Server
  3. For file sources, choose the file with Browse (or Remote to browse the Server in External and Hub modes), or type the full path
  4. For PostgreSQL, MySQL and SQL Server, select a connection and write a SQL query. For SQLite, pick the file and write a query
  5. Configure format-specific options as needed

Examples​

Loading a CSV​

  1. Drag a Read tool onto the canvas
  2. Select "CSV" as the data source
  3. Click "Browse" and select your file
  4. Adjust separator if not comma-delimited
  5. Wire the output to downstream tools

Loading an Excel File​

  1. Drag a Read tool onto the canvas
  2. Select "Excel" as the data source
  3. Click "Browse" and select your .xlsx, .xls, or .xlsb file
  4. Select the sheet to read (by number or name)
  5. Wire the output to downstream tools

Loading a Parquet​

  1. Drag a Read tool onto the canvas
  2. Select "Parquet" as the data source
  3. Click "Browse" and select your file
  4. Wire the output to downstream tools

Loading an IPC/Arrow File​

  1. Drag a Read tool onto the canvas
  2. Select "IPC / Arrow" as the data source
  3. Click "Browse" and select your .arrow, .ipc, or .feather file
  4. Wire the output to downstream tools

Loading an Avro File​

  1. Drag a Read tool onto the canvas
  2. Select "Avro" as the data source
  3. Click "Browse" and select your .avro file
  4. Optionally limit rows with "Max Rows" option
  5. Wire the output to downstream tools

Loading an ODS File​

  1. Drag a Read tool onto the canvas
  2. Select "ODS" as the data source
  3. Click "Browse" and select your .ods file
  4. Select the sheet to read (by number or name)
  5. Configure options like drop empty rows/columns
  6. Wire the output to downstream tools

Querying a PostgreSQL Database​

  1. Drag a Read tool onto the canvas
  2. Select "Database" as the data source category
  3. Select "PostgreSQL" as the database type
  4. Choose an existing connection or create one in Settings > Connections
  5. Enter your SQL query
  6. Wire the output to downstream tools

Notes​

  • Lazy loading (Scan mode) is recommended for CSV, Parquet, IPC/Arrow, and NDJSON when working with large files
  • Excel, Avro, ODS, standard JSON, and YXDB files are always loaded entirely into memory - consider converting large files to CSV, Parquet, or IPC for better performance
  • IPC/Arrow is the fastest format and ideal for intermediate data or sharing between Arrow-compatible applications
  • NDJSON (.jsonl, .ndjson) supports lazy scanning unlike standard .json files
  • YXDB is read using SigilYX's Rust core for high performance
  • Avro is best for interoperability with big data ecosystems (Hadoop, Kafka, Spark)
  • ODS and QVD are read-only in Loom. Use a Write tool with Excel, CSV or another format to save
  • All database types (PostgreSQL, MySQL, SQLite, SQL Server) use the connectorx engine for high-performance reads
  • Database credentials are never stored in workflow files. Only connection IDs are saved
  • Schema inference may not always be accurate. Use the Schema tool to cast types if needed
  • File paths must be accessible from where Sigilweaver Loom is running