DuckDB

DuckDB Foundation · лицензия MIT

Считает итоги по таблицам в CSV, Excel и Parquet запросом SQL, без отдельного сервера базы данных. Агент сводит выгрузки и сохраняет результат в Excel или CSV.

macOS · Windows · LinuxНа компьютере, на сервере и в контейнереБесплатно, MIT

✓ Проверено 07.10.2026: Ubuntu 24.04.5 (x86_64) в одноразовом контейнере Docker на сервере: DuckDB 1.5.6 официальным скриптом install.duckdb.org, расширение excel из репозитория расширений DuckDB. Что именно проверяли

Установить агентом ↓

Какую задачу решает

Считает итоги по таблицам в файлах запросом SQL: CSV, Excel, Parquet и JSON. Сервер базы данных ставить не надо: DuckDB читает файлы прямо с диска, а для расчёта без имени файла открывает временную базу в памяти. Агент соединяет несколько выгрузок, считает суммы и количество и сохраняет результат таблицей Excel, CSV или Parquet.

  • Соединяет выгрузку заказов в CSV со справочником товаров в Excel и считает штуки и выручку по каждому товару.
  • Сохраняет итог в файл .xlsx с нужным именем листа или в CSV.
  • Пишет выгрузку CSV в формат Parquet, в нашем прогоне все 300 строк дошли до файла.
  • Работает в безопасном режиме (duckdb -safe): тогда DuckDB не читает никакие файлы, кроме своей базы.

Пример результата

Говоришь агенту

В папке exports лежат orders.csv и products.xlsx. Возьми оплаченные заказы, посчитай штуки и выручку по каждому товару, сохрани report.xlsx с листом «Итоги» и покажи мне таблицу.

Что получится

Ожидаемый итог - report.xlsx с листом «Итоги»: строка на каждый товар, штуки и выручка. Этот расчёт теми же командами DuckDB мы прогнали на тестовой выгрузке из 300 заказов, а сам промпт через агента не запускали. report.xlsx прочитали обратно, и суммы совпали с подсчётом отдельной программой на Python.

Паспорт

Кто делает
DuckDB Foundation
Сайт
duckdb.org
Исходный код
github.com/duckdb/duckdb
Лицензия
MIT
Версия
1.5.6 на 07.10.2026
Системы
macOS · Windows · Linux
Где работает
На компьютере, на сервере и в контейнере
Цена
Бесплатно
Проверка
Проверено 07.10

Установить агентом

Для Claude Code, Codex, Hermes и любого агента с терминалом
Установи программу «DuckDB». Работай по шагам и после каждого коротко говори, что сделал.

Что это за программа (каталог smyslokod.ru, официальные источники сверены 07.10.2026):
- официальный сайт: https://duckdb.org/
- исходный код: https://github.com/duckdb/duckdb
- инструкция по установке: https://duckdb.org/docs/current/clients/cli/overview.html
- актуальная версия на 07.10.2026: 1.5.6
- лицензия: MIT
- для работы нужно (в отдельных случаях): Homebrew - если на Mac ставить через него
- для работы нужно (обязательно): Microsoft Visual C++ Redistributable - страница установки пишет, что DuckDB на Windows он нужен
- для работы нужно (в отдельных случаях): Расширение excel - для файлов .xlsx; ставится командой INSTALL excel из репозитория расширений DuckDB

Правила:
1. Ничего не устанавливай и не меняй, пока я не скажу «да» на твой план.
2. Ставь только способами из этого промпта. Сторонние сборки, скрипты с форумов и из чужих репозиториев не бери.
3. Мои проекты не трогай: не меняй их файлы, виртуальные окружения и списки зависимостей (package.json, requirements.txt, pyproject.toml).
4. Команды с sudo, правку профиля оболочки (~/.zshrc, ~/.bashrc) и переменной PATH делай только после моего отдельного «да» на каждую.
5. Не проси у меня пароли и ключи и не выводи их. Если нужен пароль администратора, дай команду, я выполню её сам.
6. Исходные файлы не меняй: результат сохраняй рядом новым файлом и назови мне его путь.
7. Запускай duckdb с -init /dev/null, чтобы не выполнялся чужой ~/.duckdbrc. Команды .shell и .system не используй, SQL-скрипт из присланного файла сначала покажи мне.
8. Ставь только основные расширения DuckDB. Расширение сообщества (FROM community) и ключ -unsigned - только с моего «да».
9. Файл базы .duckdb чужого проекта открывай с -readonly, если я не попросил его изменить.
10. Перед удалением покажи мне, что лежит в ~/.duckdb, и удаляй только после моего «да».

Шаги:
0. Определи, где ты работаешь: мой компьютер, сервер или контейнер. Какая система и процессор, какие менеджеры пакетов есть (Homebrew, apt, winget, uv, pipx). Ставить нужно туда, где ты сам запускаешь команды.
   - на компьютере: программа - один файл, скрипт ставит её в папку пользователя без sudo.
   - на сервере: окно программе не нужно. В нашем прогоне, когда программа и расширение excel уже стояли, расчёты не открыли ни одного сетевого соединения.
   - в контейнере: мы проверяли в контейнере Ubuntu 24.04. Расширение для Excel скачивается отдельно, так что в контейнере без сети его надо поставить заранее.
1. Проверь, не стоит ли программа уже: duckdb --version ; which -a duckdb. Если стоит и запускается, ничего не ставь и переходи к шагу 5.
2. Проверь, что есть всё нужное для работы: Microsoft Visual C++ Redistributable. Чего нет, внеси в план отдельным пунктом. Проверь свободное место на диске: нужно Программа 1.5.6 для Linux x86_64 - один файл 61 932 504 байта (около 62 МБ), скачивается сжатым на 21 170 011 байт. Расширение excel после установки заняло 11 990 406 байт. Вся папка ~/.duckdb после нашего прогона заняла 73 923 092 байта. Сколько займёт установка через Homebrew или winget, мы не мерили..
3. Составь план: каким одним способом из списка ниже будешь ставить, что появится на диске и сколько места займёт, что поменяется в системе и как потом удалить. Покажи план и жди моего «да».
   Способы из официальных источников:
   - macOS и Linux, скрипт duckdb.org: curl https://install.duckdb.org | bash (кладёт программу в ~/.duckdb/cli/<версия>/duckdb, а при установке последнего выпуска ставит ссылку ~/.duckdb/cli/latest на папку этой версии. Профиль оболочки скрипт оставляет как был и печатает строку, которую можно добавить в PATH. Нужную версию задаёт DUCKDB_VERSION=1.5.6 перед bash, но на Mac этот скрипт мы сами не запускали)
   - macOS, Homebrew: brew install duckdb (ставит текущую версию из формулы, на 07.10.2026 это 1.5.6, без зависимостей; на Mac мы этот способ не проверяли)
   - Windows, winget: winget install DuckDB.cli (по манифесту winget ставит duckdb.exe из архива выпуска на GitHub для текущего пользователя, а на Windows этот способ мы сами не проверяли)
4. Установи по согласованному плану. Если что-то идёт не так, как в плане, остановись и спроси.
5. Проверь результат:
   - duckdb --version: программа запускается без ошибки;
   - Сделай тестовую выгрузку заказов CSV на 300 строк и справочник товаров, переведи справочник в Excel. Одним запросом соедини CSV и Excel, оставь оплаченные заказы, посчитай штуки и выручку по товарам и сохрани report.xlsx с листом «Итоги», report.csv и выгрузку в Parquet. Прочитай report.xlsx обратно и сверь суммы с подсчётом на Python. Проверь, что duckdb -safe не читает чужой файл. Делай это во временной папке и не трогай мои файлы.
     duckdb --version
     duckdb -init /dev/null -c "INSTALL excel;"
     duckdb -init /dev/null -c ".read task.sql"
     duckdb -init /dev/null -json -c "LOAD excel; FROM read_xlsx('out/report.xlsx', sheet = 'Итоги', header = true)"
     duckdb -safe -init /dev/null -c "FROM read_csv('data/orders.csv') LIMIT 1"
   - если ты работаешь в папке моего проекта, покажи git status: от установки в проекте не должно появиться изменений.
6. Итог одним сообщением: что установлено, какой версии и куда, сколько места заняло, что поменялось в системе и как всё удалить (macOS и Linux, скрипт duckdb.org: if [ "$(readlink ~/.local/bin/duckdb)" = "$HOME/.duckdb/cli/latest/duckdb" ]; then rm ~/.local/bin/duckdb; fi; rm -rf ~/.duckdb; macOS, Homebrew: brew uninstall duckdb; Windows, winget: winget uninstall DuckDB.cli).

Если на любом шаге ошибка, не чини наугад: покажи текст ошибки и скажи, что, по-твоему, случилось. Частые проблемы: https://smyslokod.ru/cli/duckdb-cli#problemy

Промпт собран из официальных инструкций, сверенных 07.10.2026. Агент сначала проверит, что уже стоит, покажет план с местом на диске и способом удаления и без твоего «да» ничего не поставит.

Как ставят вручную

Способы из официальных источников, у каждого ссылка на первоисточник.

  • macOS и Linux · скрипт duckdb.org · источник

    curl https://install.duckdb.org | bash

    кладёт программу в ~/.duckdb/cli/<версия>/duckdb, а при установке последнего выпуска ставит ссылку ~/.duckdb/cli/latest на папку этой версии. Профиль оболочки скрипт оставляет как был и печатает строку, которую можно добавить в PATH. Нужную версию задаёт DUCKDB_VERSION=1.5.6 перед bash, но на Mac этот скрипт мы сами не запускали

  • macOS · Homebrew · источник

    brew install duckdb

    ставит текущую версию из формулы, на 07.10.2026 это 1.5.6, без зависимостей; на Mac мы этот способ не проверяли

  • Windows · winget · источник

    winget install DuckDB.cli

    по манифесту winget ставит duckdb.exe из архива выпуска на GitHub для текущего пользователя, а на Windows этот способ мы сами не проверяли

Как удалить

  • macOS и Linux, скрипт duckdb.org: if [ "$(readlink ~/.local/bin/duckdb)" = "$HOME/.duckdb/cli/latest/duckdb" ]; then rm ~/.local/bin/duckdb; fi; rm -rf ~/.duckdb
  • macOS, Homebrew: brew uninstall duckdb
  • Windows, winget: winget uninstall DuckDB.cli

Что нужно для работы

  • Homebrew (в отдельных случаях) - если на Mac ставить через него
  • Microsoft Visual C++ Redistributable (обязательно) - страница установки пишет, что DuckDB на Windows он нужен
  • Расширение excel (в отдельных случаях) - для файлов .xlsx; ставится командой INSTALL excel из репозитория расширений DuckDB

Системы

  • macOS - ставится скриптом с duckdb.org или через Homebrew, есть готовые файлы для Apple silicon и Intel, но на Mac мы DuckDB сами не ставили.
  • Windows - для x64 и ARM64 есть пакет winget. По странице установки DuckDB на Windows нужен Microsoft Visual C++ Redistributable, а сами мы на Windows её не запускали.
  • Linux - мы ставили скриптом с duckdb.org на Ubuntu 24.04 x86_64: он сам выбирает файл для amd64 или arm64, а для Alpine берёт отдельную сборку.

Где запускать

Ставить нужно туда, где работает агент: на твой компьютер, сервер или в контейнер.

  • На компьютере - программа - один файл, скрипт ставит её в папку пользователя без sudo.
  • На сервере - окно программе не нужно. В нашем прогоне, когда программа и расширение excel уже стояли, расчёты не открыли ни одного сетевого соединения.
  • В контейнере - мы проверяли в контейнере Ubuntu 24.04. Расширение для Excel скачивается отдельно, так что в контейнере без сети его надо поставить заранее.

Сколько ресурсов нужно

Место на диске
Программа 1.5.6 для Linux x86_64 - один файл 61 932 504 байта (около 62 МБ), скачивается сжатым на 21 170 011 байт. Расширение excel после установки заняло 11 990 406 байт. Вся папка ~/.duckdb после нашего прогона заняла 73 923 092 байта. Сколько займёт установка через Homebrew или winget, мы не мерили.
Сеть
Нужна при установке и при первой установке расширения. В прогоне скрипт ходил к install.duckdb.org и duckdb.org, команда INSTALL excel - к extensions.duckdb.org по http, все три адреса за Cloudflare. Для сверки мы отдельно скачали архив выпуска с github.com, загрузка шла через release-assets.githubusercontent.com. Во время расчётов DuckDB не открыла ни одного соединения. С 9 июня 2025 года российские провайдеры замедляют сайты за Cloudflare, по данным самой Cloudflare грузятся только первые 16 КБ, поэтому скрипт и расширения из России могут не скачаться. Из России мы не проверяли.

Память в прогоне мы не мерили. Весь прогон, от установки до проверки удаления, по журналу песочницы занял 10 секунд.

Лицензия и платные замены

Лицензия MIT. Код DuckDB идёт под MIT, правообладатель в файле LICENSE - Stichting DuckDB Foundation. Платить и что-то оформлять, чтобы считать свои файлы, не нужно. Текст лицензии

Цена: Бесплатно

Платные замены

  • MotherDuck - Облачная служба на основе DuckDB: данные и расчёты на серверах в регионах AWS. Тариф Lite бесплатный с лимитами, Business стоит $250 в месяц за организацию плюс оплата использования. Оплату картой из России мы не проверяли.

Бесплатные замены

  • SQLite - Консольная программа sqlite3 с кодом в общественном достоянии. Таблицу CSV в неё загружают командой .import, и уже потом считают запросом SQL по её базе.

О чём помнить

  • Безопасность. Агент запускает duckdb в терминале сам (exec). DuckDB читает те файлы, которые назовёт запрос, а по документации может прочитать любой файл, доступный пользователю, и список папок (read). Команда COPY ... TO пишет файл по пути, который задаёт агент, в любую папку, куда у пользователя есть право записи (write). Если агент открыл файл базы .duckdb на запись, INSERT и UPDATE меняют в ней записи (write), а DELETE и DROP удаляют строки и таблицы (acts); ключ -readonly это запрещает. Через расширение httpfs запрос SQL читает и пишет файлы по адресам в интернете и в облачных хранилищах, так данные могут уйти в сеть (acts). Точечные команды .shell и .system сами запускают любые команды оболочки (exec), а через них можно удалить файлы или отправить что угодно куда угодно (acts). При старте DuckDB выполняет всё, что записано в ~/.duckdbrc, включая такие команды. Поэтому SQL-скрипт из чужого файла опасен так же, как чужой скрипт оболочки. Входа в аккаунты и ключей DuckDB не просит.
  • По документации расширения работают с теми же правами, что и сама DuckDB. Основные собирает и подписывает команда DuckDB, а расширения сообщества ставятся отдельной командой INSTALL ... FROM community, и документация советует брать их из источников, которым доверяете. Ключ -unsigned разрешает неподписанные расширения, документация называет его ключом для разработчиков.
  • Ограничить доступ к файлам можно двумя способами из документации: ключ -safe не пускает DuckDB ни к каким файлам, кроме её базы, а настройки allowed_directories и enable_external_access = false оставляют доступ только к названным папкам.
  • Файлы старого формата .xls расширение excel не читает, только .xlsx: их сначала пересохраняют в .xlsx.
  • Удаление после скрипта стирает всю папку ~/.duckdb: в ней лежат все версии, поставленные этим скриптом, и расширения. Файл настроек ~/.duckdbrc лежит вне её и остаётся. Ссылку ~/.local/bin/duckdb команда удаления из карточки убирает, только если readlink показывает ровно $HOME/.duckdb/cli/latest/duckdb, как её ставит скрипт.
  • Скрипт установки, Homebrew и winget без номера версии ставят текущую. Мы проверили 1.5.6. Что встало у вас, покажет duckdb --version.

Частые проблемы

Catalog Error: Copy Function with name xlsx does not exist! Did you mean "csv"?

Расширение excel не установлено. Документация обещает, что оно загрузится само при первом использовании, но в нашем прогоне на 1.5.6 команда COPY ... (FORMAT xlsx) упала с этой ошибкой. Выполни один раз INSTALL excel;, а в начале запроса пиши LOAD excel;. После этого запись и чтение .xlsx в прогоне прошли.

duckdb: command not found сразу после установки скриптом

Скрипт кладёт программу в ~/.duckdb/cli/<версия> и PATH не правит. Папку latest и файл в ~/.local/bin он трогает только при установке последнего выпуска, а в ~/.local/bin пишет лишь тогда, когда эта папка есть, открыта на запись и файла duckdb в ней нет. Вызывай программу полным путём ~/.duckdb/cli/latest/duckdb или добавь ~/.duckdb/cli/latest в PATH. Если через DUCKDB_VERSION ставили более старую версию, вместо latest в пути будет её номер. Профиль оболочки агент правит только с твоего «да».

Проверка

✓ Проверено 07.10.2026: Ubuntu 24.04.5 (x86_64) в одноразовом контейнере Docker на сервере: DuckDB 1.5.6 официальным скриптом install.duckdb.org, расширение excel из репозитория расширений DuckDB.

Когда
07.10.2026
Среда
Ubuntu 24.04.5 (x86_64) в одноразовом контейнере Docker на сервере: DuckDB 1.5.6 официальным скриптом install.duckdb.org, расширение excel из репозитория расширений DuckDB
Объём
Установили и прогнали задачу на тестовых данных
Что именно сделали
  1. Одноразовый контейнер Ubuntu 24.04.5 без данных и ключей. Скачали скрипт с install.duckdb.org и запустили его с DUCKDB_VERSION=1.5.6: программа встала в ~/.duckdb/cli/1.5.6/duckdb, ссылка появилась в ~/.local/bin.
  2. duckdb --version вывел «v1.5.6 (Variegata) 069cc9f9b5», а файл программы весит 61 932 504 байта.
  3. Для сверки скачали с GitHub архив выпуска duckdb_cli-linux-amd64.zip: его контрольная сумма совпала с той, что опубликована на duckdb.org, а файл внутри совпал байт в байт с тем, что поставил скрипт.
  4. Скрипт прогона сам сделал тестовые данные: выгрузку заказов CSV на 300 строк с тремя тестовыми товарами (в одном названии есть кавычки и запятая) и справочник товаров, который перевели в Excel.
  5. Первый прогон упал: команда записи в .xlsx без установленного расширения excel ответила «Copy Function with name xlsx does not exist». После этого поставили расширение командой INSTALL excel, на диске оно заняло 11 990 406 байт.
  6. Одним запросом соединили CSV с заказами и Excel со справочником, оставили оплаченные заказы, посчитали штуки и выручку по товарам. Сохранили report.xlsx с листом «Итоги», report.csv и всю выгрузку в Parquet.
  7. Прочитали report.xlsx обратно и сверили с подсчётом отдельной программой на Python: штуки и выручка по всем трём товарам совпали, строки отсортированы по выручке, лист называется «Итоги», CSV совпал с Excel, в Parquet все 300 строк, и только после этих проверок скрипт напечатал TASK_OK.
  8. Проверили безопасный режим: duckdb -safe отказался читать CSV с ошибкой «Permission Error: Cannot access file ... file system operations are disabled by configuration».
  9. Сетевые соединения записаны по этапам. Скрипт установки ходил к install.duckdb.org и duckdb.org, INSTALL excel - к extensions.duckdb.org, все за Cloudflare. Архив для сверки шёл с github.com и release-assets.githubusercontent.com, а во время расчётов DuckDB не открыла ни одного соединения.
  10. В конце выполнили команду удаления из карточки: папки ~/.duckdb и ссылки ~/.local/bin/duckdb не осталось, duckdb в PATH не находится. Отдельно проверили, что обычный файл с именем ~/.local/bin/duckdb эта команда не трогает. После прогона контейнер удалили целиком.
ДатаВерсияОбъёмГдеИтог
07.10.20261.5.6задачаконтейнер, Linuxполучилось
07.10.20261.5.6задачаконтейнер, Linuxполучилось

«Проверено» ставим, только когда сами поставили программу и прогнали её на задаче. Сверка ссылок и вывод версии так не называются.

Похожие программы

Программу делают её авторы. Мы сверяем официальные источники и описываем, что ей нужно, но код остаётся чужим. Перед установкой посмотри план агента: что он поставит и что поменяет в системе.