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