Перейти к содержимому
TelegramGitHub

Установка DuckDB и учебной базы

Для курса нужны две вещи:

  1. DuckDB — программа-база данных.
  2. Файл учебной базы sql-tutorial.duckdb — в нём все таблицы курса.

DuckDB — аналитическая база данных, которая работает прямо на вашем компьютере. Сервер не нужен. Вся база — один файл.

Почему DuckDB:

  • Ставится за минуту, бесплатно, работает на macOS, Windows и Linux.
  • Диалект SQL почти как у Postgres. Всё, что вы выучите, пригодится в Postgres, Snowflake, BigQuery и других базах.
  • Очень быстрая. Миллионы строк считаются за доли секунды.
  • Её используют в реальной работе: в dbt, в Python-пайплайнах, для анализа файлов CSV и Parquet.

Откройте приложение Терминал (Terminal). Найти его можно через Spotlight: ⌘ + Пробел, введите «Терминал».

Если у вас есть Homebrew:

Окно терминала
brew install duckdb

Без Homebrew — официальный скрипт установки:

Окно терминала
curl https://install.duckdb.org | sh

Скрипт напишет в конце, какую строку добавить в ~/.zshrc, чтобы команда duckdb работала. Сделайте это и откройте новое окно терминала.

Проверьте, что всё работает:

Окно терминала
duckdb --version

Должна появиться версия, например v1.4.3. Нужна версия 1.2 или новее.

Создайте папку для курса и скачайте в неё файл базы (около 40 МБ).

Скачать: sql-tutorial.duckdb

Или из терминала:

Окно терминала
mkdir -p ~/sql-course && cd ~/sql-course
curl -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_units
LIMIT 5;

Вы увидите таблицу из 5 строк. Всё готово.

Команды с точкой — это команды самой программы, а не 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. Почти весь SQL курса работает и в Postgres. Где DuckDB отличается от других баз, мы пишем об этом в уроке.