You have customers in MySQL, orders in PostgreSQL, and a CSV on your desktop — and you need them in one answer. Here's how to JOIN across all of them in a single SQL query, without building a pipeline.
A standard SQL client connects to one database at a time, so a query in your MySQL connection can't see a table in PostgreSQL. The usual workarounds are painful:
What you actually want is to point one engine at all your sources and write a normal JOIN.
The trick is a local-first query engine (Varan uses DuckDB) that can read from multiple databases and files at once and run the join on your machine — with read-only access to your sources, no admin rights, and nothing written back.
SELECT c.name, o.total, s.tier
FROM mysql__shop__customers c
JOIN pg__analytics__orders o ON o.customer_id = c.id
JOIN read_csv('segments.csv') s ON s.customer_id = c.id;
-- one result, across MySQL, PostgreSQL and a CSV — no ETL
Point Varan at both, then JOIN a table from each in one statement. There's no pipeline and no copying — the engine reads from both live.
Spreadsheets become queryable tables, so a CSV or Excel file joins to a MySQL or PostgreSQL table in the same query — handy for that one file that never made it into the database.
Varan is a desktop app for macOS, Windows and Linux — free during the beta.
Request beta access →Not with a plain client — each connects to one server. You need a cross-source engine; Varan runs the join locally across MySQL, PostgreSQL, DuckDB and files.
Similar idea, but local-first and zero-setup. Engines like Trino or Presto do federated queries too, but need infrastructure to run; Varan is a desktop app you point at your sources.
DBeaver is a single-database client. See Varan vs DBeaver for the full comparison.