Работа с SQLite базами данных через терминал дашборда

✅ Возможности

В дашборде есть встроенный терминал, который позволяет выполнять команды внутри контейнера бота. Через этот терминал можно работать с SQLite базами данных, используя утилиту sqlite3.
Web Terminal с примером команды SQLite
Пример интерфейса терминала дашборда с доступными командами и примером работы с SQLite

📍 Расположение баз данных

Базы данных ботов хранятся в папке /app/data/ внутри контейнера. Эта папка сохраняется между перезапусками контейнера.

🔧 Доступные команды

Проверка наличия sqlite3

sqlite3 --version

Просмотр списка баз данных

ls -la /app/data/*.db
или
find /app/data -name ".db" -o -name ".sqlite" -o -name "*.sqlite3"

Просмотр структуры базы данных

sqlite3 /app/data/bot.db ".schema"

Просмотр списка таблиц

sqlite3 /app/data/bot.db ".tables"

Выполнение SELECT запроса

sqlite3 /app/data/bot.db "SELECT * FROM users LIMIT 10;"

Добавление строки в таблицу

sqlite3 /app/data/bot.db "INSERT INTO users (name, email) VALUES ('Иван', 'ivan@example.com');"

Обновление данных

sqlite3 /app/data/bot.db "UPDATE users SET email='new@example.com' WHERE id=1;"

Удаление строки

sqlite3 /app/data/bot.db "DELETE FROM users WHERE id=1;"

Интерактивный режим

Для более сложных операций можно использовать интерактивный режим:
sqlite3 /app/data/bot.db
В интерактивном режиме доступны команды:
  • .tables - список таблиц
  • .schema - структура базы
  • .schema users - структура конкретной таблицы
  • .mode column - форматирование вывода в виде таблицы
  • .headers on - показывать заголовки колонок
  • .quit или .exit - выход

Экспорт данных в CSV

sqlite3 /app/data/bot.db ".mode csv" ".headers on" "SELECT * FROM users;" > /app/data/users_export.csv

Импорт данных из SQL файла

sqlite3 /app/data/bot.db < /app/data/import.sql

⚠️ Ограничения терминала

Терминал блокирует некоторые опасные команды и разделители:
  • Запрещены: ;, ||, &&, ` `, $()
  • Команды должны быть в кавычках, если содержат пробелы
  • Используйте простые команды без сложных конструкций

📝 Примеры использования

Пример 1: Добавление тестового пользователя

sqlite3 /app/data/bot.db "INSERT INTO users (username, created_at) VALUES ('test_user', datetime('now'));"

Пример 2: Просмотр последних 5 записей

sqlite3 /app/data/bot.db "SELECT * FROM users ORDER BY id DESC LIMIT 5;"

Пример 3: Подсчет записей

sqlite3 /app/data/bot.db "SELECT COUNT(*) FROM users;"

Пример 4: Резервная копия базы

cp /app/data/bot.db /app/data/bot.db.backup

Пример 5: Восстановление из резервной копии

cp /app/data/bot.db.backup /app/data/bot.db

🔒 Безопасность

  • Все команды выполняются внутри контейнера бота
  • Изменения в базе данных сохраняются в volume
  • Рекомендуется делать резервные копии перед важными операциями
  • Используйте транзакции для критичных операций (через интерактивный режим)

💡 Советы

    • Проверяйте путь к базе: Убедитесь, что база находится в /app/data/, а не в /app/
    • Делайте резервные копии: Перед изменением данных создавайте копию базы
    • Используйте интерактивный режим: Для сложных операций удобнее использовать интерактивный режим
    • Проверяйте результат: После INSERT/UPDATE проверяйте изменения через SELECT

🐛 Решение проблем

Команда sqlite3 не найдена

Если команда
sqlite3` не найдена, это означает, что контейнер был создан до обновления. Пересоберите контейнер бота через панель управления.

Ошибка "database is locked"

База данных заблокирована другим процессом. Убедитесь, что бот не запущен или остановите его перед выполнением операций.

Ошибка "no such table"

Проверьте правильность имени таблицы:
sqlite3 /app/data/bot.db ".tables"