Установка DuckDB и учебной базы
Для курса нужны две вещи:
- DuckDB — программа-база данных.
- Файл учебной базы
sql-tutorial.duckdb— в нём все таблицы курса.
Что такое DuckDB
Заголовок раздела «Что такое DuckDB»DuckDB — аналитическая база данных, которая работает прямо на вашем компьютере. Сервер не нужен. Вся база — один файл.
Почему DuckDB:
- Ставится за минуту, бесплатно, работает на macOS, Windows и Linux.
- Диалект SQL почти как у Postgres. Всё, что вы выучите, пригодится в Postgres, Snowflake, BigQuery и других базах.
- Очень быстрая. Миллионы строк считаются за доли секунды.
- Её используют в реальной работе: в dbt, в Python-пайплайнах, для анализа файлов CSV и Parquet.
Шаг 1. Установите DuckDB
Заголовок раздела «Шаг 1. Установите DuckDB»Откройте приложение Терминал (Terminal). Найти его можно через Spotlight: ⌘ + Пробел, введите «Терминал».
Если у вас есть Homebrew:
brew install duckdbБез Homebrew — официальный скрипт установки:
curl https://install.duckdb.org | shСкрипт напишет в конце, какую строку добавить в ~/.zshrc, чтобы команда duckdb работала. Сделайте это и откройте новое окно терминала.
Откройте PowerShell или Терминал Windows: нажмите Win, введите «PowerShell», нажмите Enter.
winget install DuckDB.cliПосле установки закройте и снова откройте PowerShell. Иначе Windows не найдёт команду duckdb.
Если winget нет, скачайте duckdb_cli-windows-amd64.zip со страницы установки DuckDB. Распакуйте duckdb.exe в папку, где будете заниматься, например C:\sql-course. Запускайте его из этой папки как .\duckdb.exe.
curl https://install.duckdb.org | shДобавьте папку из подсказки скрипта в PATH и откройте новый терминал.
Проверьте, что всё работает:
duckdb --versionДолжна появиться версия, например v1.4.3. Нужна версия 1.2 или новее.
Шаг 2. Скачайте учебную базу
Заголовок раздела «Шаг 2. Скачайте учебную базу»Создайте папку для курса и скачайте в неё файл базы (около 40 МБ).
Скачать: sql-tutorial.duckdb
Или из терминала:
mkdir -p ~/sql-course && cd ~/sql-coursecurl -L -o sql-tutorial.duckdb https://github.com/surfalytics/dataengineer_ru/releases/latest/download/sql-tutorial.duckdbmkdir C:\sql-course; cd C:\sql-coursecurl.exe -L -o sql-tutorial.duckdb https://github.com/surfalytics/dataengineer_ru/releases/latest/download/sql-tutorial.duckdbmkdir -p ~/sql-course && cd ~/sql-coursecurl -L -o sql-tutorial.duckdb https://github.com/surfalytics/dataengineer_ru/releases/latest/download/sql-tutorial.duckdbШаг 3. Откройте базу и выполните первый запрос
Заголовок раздела «Шаг 3. Откройте базу и выполните первый запрос»В терминале, в папке курса:
duckdb sql-tutorial.duckdbПоявится приглашение D. Это значит, вы внутри DuckDB. Введите запрос и нажмите Enter:
SELECT *FROM tutorial.us_housing_unitsLIMIT 5;Вы увидите таблицу из 5 строк. Всё готово.
Полезные команды DuckDB
Заголовок раздела «Полезные команды DuckDB»Команды с точкой — это команды самой программы, а не SQL. Точка с запятой им не нужна.
| Команда | Что делает |
|---|---|
.tables | Показать все таблицы |
DESCRIBE tutorial.us_housing_units; | Показать столбцы таблицы и их типы |
.maxrows 100 | Показывать до 100 строк результата (по умолчанию DuckDB сокращает вывод) |
.mode line | Показывать каждую строку столбиком — удобно для широких таблиц. Вернуть: .mode duckbox |
.timer on | Показывать время выполнения запроса |
.read queries.sql | Выполнить запросы из файла |
.exit или Ctrl + D | Выйти |
Стрелка ↑ возвращает предыдущий запрос. Его можно исправить и запустить снова.
Как удобнее писать запросы
Заголовок раздела «Как удобнее писать запросы»Длинные запросы неудобно набирать в терминале. Есть три удобных способа.
1. Файл + терминал. Пишите запрос в редакторе (VS Code, Notepad++ или любой другой) и сохраняйте в файл, например lesson.sql. В DuckDB выполните .read lesson.sql.
2. Встроенный интерфейс DuckDB в браузере. Запустите:
duckdb -ui sql-tutorial.duckdbОткроется страница в браузере с редактором запросов и таблицами слева. База при этом остаётся на вашем компьютере.
3. DBeaver. Бесплатный SQL-клиент, как на работе. Установите DBeaver Community, создайте подключение DuckDB и укажите путь к файлу sql-tutorial.duckdb. DBeaver сам скачает драйвер.
Если что-то сломалось
Заголовок раздела «Если что-то сломалось»duckdb: command not found(macOS/Linux) или «не является внутренней или внешней командой» (Windows). Откройте новое окно терминала. Если не помогло — повторите шаг 1 и проверьтеPATH.Catalog Error: Table with name ... does not exist. Проверьте имя таблицы и схему:tutorial.илиbenn.. Посмотрите список через.tables.- Испортили данные. Скачайте файл базы заново. Он всегда такой же, как в начале курса.
DuckDB и другие базы
Заголовок раздела «DuckDB и другие базы»Уроки написаны и проверены в DuckDB. Почти весь SQL курса работает и в Postgres. Где DuckDB отличается от других баз, мы пишем об этом в уроке.