Работа с SQLite базами данных через терминал дашборда
✅ Возможности
В дашборде есть встроенный терминал, который позволяет выполнять команды внутри контейнера бота. Через этот терминал можно работать с SQLite базами данных, используя утилиту
sqlite3.
Пример интерфейса терминала дашборда с доступными командами и примером работы с SQLite
📍 Расположение баз данных
Базы данных ботов хранятся в папке
/app/data/ внутри контейнера. Эта папка сохраняется между перезапусками контейнера.
🔧 Доступные команды
Проверка наличия sqlite3
Просмотр списка баз данных
Copy ls -la /app/data/*.db
или
Copy find /app/data -name ".db" -o -name " .sqlite" -o -name "*.sqlite3"
Просмотр структуры базы данных
Copy sqlite3 /app/data/bot.db ".schema"
Просмотр списка таблиц
Copy sqlite3 /app/data/bot.db ".tables"
Выполнение SELECT запроса
Copy sqlite3 /app/data/bot.db "SELECT * FROM users LIMIT 10;"
Добавление строки в таблицу
Copy sqlite3 /app/data/bot.db "INSERT INTO users (name, email) VALUES ('Иван', 'ivan@example.com');"
Обновление данных
Copy sqlite3 /app/data/bot.db "UPDATE users SET email='new@example.com' WHERE id=1;"
Удаление строки
Copy sqlite3 /app/data/bot.db "DELETE FROM users WHERE id=1;"
Интерактивный режим
Для более сложных операций можно использовать интерактивный режим:
Copy sqlite3 /app/data/bot.db
В интерактивном режиме доступны команды:
.tables - список таблиц
.schema - структура базы
.schema users - структура конкретной таблицы
.mode column - форматирование вывода в виде таблицы
.headers on - показывать заголовки колонок
.quit или .exit - выход
Экспорт данных в CSV
Copy sqlite3 /app/data/bot.db ".mode csv" ".headers on" "SELECT * FROM users;" > /app/data/users_export.csv
Импорт данных из SQL файла
Copy sqlite3 /app/data/bot.db < /app/data/import.sql
⚠️ Ограничения терминала
Терминал блокирует некоторые опасные команды и разделители:
Запрещены: ;, ||, &&, ` `, $()
Команды должны быть в кавычках, если содержат пробелы
Используйте простые команды без сложных конструкций
📝 Примеры использования
Пример 1: Добавление тестового пользователя
Copy sqlite3 /app/data/bot.db "INSERT INTO users (username, created_at) VALUES ('test_user', datetime('now'));"
Пример 2: Просмотр последних 5 записей
Copy sqlite3 /app/data/bot.db "SELECT * FROM users ORDER BY id DESC LIMIT 5;"
Пример 3: Подсчет записей
Copy sqlite3 /app/data/bot.db "SELECT COUNT(*) FROM users;"
Пример 4: Резервная копия базы
Copy cp /app/data/bot.db /app/data/bot.db.backup
Пример 5: Восстановление из резервной копии
Copy 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"
Проверьте правильность имени таблицы:
Copy sqlite3 /app/data/bot.db ".tables"