Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.fiquela.io/llms.txt

Use this file to discover all available pages before exploring further.

FiQueLa lets you filter, join, group, and aggregate data from structured files using familiar SQL concepts. Write queries as PHP fluent API calls or as SQL-like strings — your choice.

Installation

Install via Composer and set up optional format dependencies.

Quickstart

Write your first query against a file in under 5 minutes.

Fluent API

Build queries with a chainable PHP API — selects, filters, joins, and more.

FQL Syntax

Write SQL-like strings to query files directly using the File Query Language.

Why FiQueLa?

Work with structured files using SQL concepts you already know — no database setup required.
  • Universal format support — XML, JSON, NDJSON, CSV, XLS/XLSX, ODS, YAML, NEON, and directories
  • Two query interfaces — fluent PHP API or FQL string syntax, interchangeable
  • Stream-first — large JSON, XML, and CSV files processed with low memory overhead
  • Full SQL feature setJOIN, GROUP BY, HAVING, ORDER BY, UNION, EXPLAIN, and 40+ built-in functions
  • DTO mapping — map results directly to typed PHP objects

Explore the docs

Supported formats

See which file formats are supported and how to open them.

Query lifecycle

Understand how FiQueLa executes a query step by step.

Conditions & operators

Filter data with WHERE, AND, OR, XOR, LIKE, REGEXP, BETWEEN, and more.

Functions reference

Browse 40+ built-in string, math, date, array, and hashing functions.

Joins

Join data across multiple files and formats in a single query.

EXPLAIN & benchmarking

Inspect query execution plans and benchmark performance.

Quick example

use FQL\Query;
use FQL\Enum\Operator;

$results = Query\Provider::fromFileQuery('xml(./products.xml).SHOP.SHOPITEM')
    ->selectAll()
    ->where('PRICE', Operator::LESS_THAN_OR_EQUAL, 200)
    ->orderBy('PRICE')->desc()
    ->limit(10)
    ->execute()
    ->fetchAll();
Or using FQL string syntax:
use FQL\Query;

$results = Query\Provider::fql(<<<FQL
    SELECT *
    FROM xml(./products.xml).SHOP.SHOPITEM
    WHERE PRICE <= 200
    ORDER BY PRICE DESC
    LIMIT 10
FQL)->execute()->fetchAll();