This week's tip of the week is DuckDB.
At some point, most developers get handed a data export and need to answer one question about it.
If the file is small, you open it in a spreadsheet. If it is large or nested, you start writing a throwaway script, importing it into a database, or watching your editor reconsider its life choices.
DuckDB lets you query CSV, JSON, and Parquet files directly with SQL. There is no database server to run, schema to define, or import step required.
I recently exported all the 404 URLs from Google Search Console to figure out why Google was still crawling pages that no longer existed on my site.
Follow the installation page for Windows, macOS, or Linux. On macOS and Linux:
curl https://install.duckdb.org | shThe installer will tell you how to add DuckDB to your PATH. Then launch it:
duckdbQuery the CSV by filename:
SELECT URL, "Last crawled"
FROM 'Table.csv'
ORDER BY "Last crawled" DESC
LIMIT 10;I only cared about the route paths so I could search my codebase and content:
SELECT
regexp_extract(URL, '^https?://[^/]+(/[^?]*)', 1) AS path,
"Last crawled"
FROM 'Table.csv'
ORDER BY "Last crawled" DESC
LIMIT 10;
Extracting route paths from a Google Search Console CSV export
It does not even need to be a local file. DuckDB can also query JSON and Parquet files directly over HTTPS.
For example, I queried the live speaker data from AI Engineer Europe 2026, where I spoke this year. I expanded each speaker’s sessions and, for fun, found everyone whose name starts with nic:
SELECT
speaker.name,
speaker.role,
speaker.company,
talk.title
FROM read_json_auto(
'https://www.ai.engineer/europe/2026/speakers.json'
) AS conference,
UNNEST(conference.speakers) AS s(speaker),
UNNEST(speaker.sessions) AS t(talk)
WHERE speaker.name ILIKE 'nic%'
ORDER BY speaker.name, talk.title;

Querying remote JSON data with DuckDB
That is the kind of task I would normally reach for jq or a quick script to handle.
Prefer a UI? Run duckdb -ui to browse data and write SQL in a local browser interface.

Running the DuckDB UI locally in a browser
That's it! Short and sweet. Until the next one!

