DuckDB — Mission
Sections
Réglages de lecture
Voix naturelle enregistrée pour ce cours, la même dans tous les navigateurs.
Aucune voix pour cette langue dans ce navigateur.
Plus de voix
Code et termes techniques en anglais
Désactivé : la voix de la page lit tout, sans pause entre deux voix.
Aucune voix pour cette langue dans ce navigateur.
Plus de voix
D’autres voix : Microsoft Edge propose des voix naturelles en ligne, et Windows (Paramètres › Heure et langue › Voix), macOS et Android en installent d’autres.
Pourquoi j’apprends ça
Section intitulée « Pourquoi j’apprends ça »Chaque question que je me pose sur la CI de ce site — quel workflow échoue le plus, combien de temps prennent les jobs Windows, quel step a ralenti — finit en une pile de JSON sortie de gh run list et gh api. Je la lis avec jq, ou je la colle dans un tableur. DuckDB promet de répondre à ces questions en SQL, directement depuis les fichiers, sans serveur à installer.
À qui s’adresse ce cours
Section intitulée « À qui s’adresse ce cours »Tu connais le SQL de SQL Server, PostgreSQL ou SQLite : SELECT, JOIN, GROUP BY. Tu écris du C# ou du Java. Tu n’as besoin de rien savoir de l’analytique ni du data engineering.
DuckDB en un tableau
Section intitulée « DuckDB en un tableau »| SQL Server / PostgreSQL | SQLite | DuckDB | |
|---|---|---|---|
| S’exécute | comme un serveur | dans ton processus | dans ton processus |
| Conçu pour | les transactions (OLTP) | les transactions, les petites applications | l’analytique (OLAP) : parcours, agrégats, jointures sur beaucoup de lignes |
| Stockage | par lignes | par lignes | par colonnes |
| Base de données | une instance de serveur | un fichier | un fichier, ou aucun : il interroge aussi directement des fichiers CSV, JSON et Parquet |
| Depuis .NET | Microsoft.Data.SqlClient, Npgsql |
Microsoft.Data.Sqlite |
DuckDB.NET (ADO.NET) |
| Depuis Java | pilote JDBC | pilote JDBC | pilote JDBC |
La première ligne du tableau, en image : SQL Server et PostgreSQL s’exécutent comme un serveur, dans un processus à eux, alors que DuckDB s’exécute dans ton processus, à côté des fichiers qu’il lit.
flowchart LR subgraph p1["ton processus"] app1["code C# ou Java"] --> driver["pilote"] end subgraph p2["processus serveur"] server["SQL Server ou PostgreSQL"] end driver --> server subgraph p3["ton processus"] app2["code C# ou Java"] --> duck["DuckDB, par DuckDB.NET ou JDBC"] end dbfile[("un fichier de base de données, ou aucun")] files[("fichiers CSV, JSON et Parquet")] duck --> dbfile duck --> filesLes données
Section intitulée « Les données »Le cours interroge un instantané de l’historique GitHub Actions de ce dépôt, exporté le 2026-09-14 dans code/duckdb/data :
runs.json: 125 exécutions de workflow, obtenues avecgh run list --limit 1000 --json databaseId,workflowName,event,status,conclusion,createdAt,updatedAt,startedAt,headBranch,headSha,attempt;jobs.json: les 315 jobs de ces exécutions, avec leurs steps, obtenus avec l’API REST de GitHub.
Ce sont les exécutions produites par le cours GitHub Actions : de vrais échecs, de vraies durées, trois systèmes d’exploitation.
À la fin de ce cours, je saurai
Section intitulée « À la fin de ce cours, je saurai »- interroger des fichiers CSV, JSON et Parquet en SQL depuis la CLI de DuckDB ;
- utiliser les extensions SQL de DuckDB pour écrire des requêtes analytiques plus courtes ;
- aplatir du JSON imbriqué avec
STRUCT,LISTetunnest; - convertir d’un format à l’autre et lire plusieurs fichiers d’un coup ;
- utiliser DuckDB depuis C# et depuis Java ;
- lire un plan de requête et savoir quand DuckDB n’est pas le bon outil.
| # | Leçon | Si tu connais SQL Server |
|---|---|---|
| 1 | Premières requêtes | sqlcmd, OPENROWSET, SELECT INTO |
| 2 | Friendly SQL : dates, fenêtres, QUALIFY, PIVOT |
fonctions de fenêtrage, PIVOT |
| 3 | Données imbriquées : STRUCT, LIST, unnest |
OPENJSON, CROSS APPLY |
| 4 | Fichiers : CSV, Parquet, globs, fichiers distants | BULK INSERT, tables externes |
| 5 | DuckDB depuis C# | ADO.NET |
| 6 | DuckDB depuis Java | JDBC |
| 7 | Performances : plans et stockage en colonnes | plans d’exécution, index columnstore |
| 8 | Persistance, transactions et concurrence | isolation, verrous |
| — | Journal |
Ressources
Section intitulée « Ressources »- Documentation de DuckDB
- Pourquoi DuckDB
- CLI de DuckDB
- Friendly SQL : les extensions au SQL standard
- Code source de DuckDB