database-tools

Database operations for SQLite and PostgreSQL.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "database-tools" with this command: npx skills add winsorllc/upgraded-carnival/winsorllc-upgraded-carnival-database-tools

Database Tools Skill

Database operations for SQLite and PostgreSQL.

When to Use

  • Query databases

  • Run migrations

  • Backup and restore

  • Check database health

  • Analyze queries

SQLite Operations

Connect & Query

Connect to database

sqlite3 my.db

List tables

sqlite3 my.db ".tables"

Schema of table

sqlite3 my.db ".schema users"

List indexes

sqlite3 my.db ".indexes"

Query Examples

Select all from table

sqlite3 my.db "SELECT * FROM users;"

Select with where

sqlite3 my.db "SELECT * FROM users WHERE id = 1;"

Count rows

sqlite3 my.db "SELECT COUNT(*) FROM users;"

Insert row

sqlite3 my.db "INSERT INTO users (name, email) VALUES ('John', 'john@example.com');"

Update row

sqlite3 my.db "UPDATE users SET name = 'Jane' WHERE id = 1;"

Delete row

sqlite3 my.db "DELETE FROM users WHERE id = 1;"

Export/Import

Export to CSV

sqlite3 my.db -header -csv "SELECT * FROM users;" > users.csv

Import from CSV

sqlite3 my.db ".import users.csv users"

Export schema

sqlite3 my.db ".schema" > schema.sql

Full database dump

sqlite3 my.db ".dump" > backup.sql

Vacuum & Optimize

Check database size

ls -lh my.db

Vacuum (reclaim space)

sqlite3 my.db "VACUUM;"

Analyze (update statistics)

sqlite3 my.db "ANALYZE;"

PostgreSQL Operations

Connect & Query

Connect

psql -U user -d database

Connect to remote

psql -h hostname -U user -d database

With password

PGPASSWORD=secret psql -U user -d database

Common Commands

List tables

\dt

Describe table

\d users

List indexes

\di

List sequences

\ds

List views

\dv

Quit

\q

Query Examples

Select all

SELECT * FROM users;

Select with limit

SELECT * FROM users LIMIT 10;

Join example

SELECT u.name, o.total FROM users u JOIN orders o ON u.id = o.user_id;

Aggregate

SELECT status, COUNT(*) FROM orders GROUP BY status;

Subquery

SELECT * FROM users WHERE id IN ( SELECT user_id FROM orders WHERE total > 100 );

User Management

Create user

CREATE USER newuser WITH PASSWORD 'secret';

Grant privileges

GRANT ALL PRIVILEGES ON DATABASE mydb TO newuser;

Grant table access

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO newuser;

Revoke access

REVOKE ALL PRIVILEGES ON DATABASE mydb FROM newuser;

Backup & Restore

Dump single database

pg_dump -U user database > backup.sql

Dump with compression

pg_dump -U user database | gzip > backup.sql.gz

Restore

psql -U user database < backup.sql

Restore from gzipped

gunzip -c backup.sql.gz | psql -U user database

Dump all databases

pg_dumpall -U user > all_databases.sql

Migration Examples

Create Table Migration

-- migrations/001_create_users.sql CREATE TABLE IF NOT EXISTS users ( id SERIAL PRIMARY KEY, name VARCHAR(255) NOT NULL, email VARCHAR(255) UNIQUE NOT NULL, password_hash VARCHAR(255) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );

CREATE INDEX idx_users_email ON users(email); CREATE INDEX idx_users_created_at ON users(created_at);

Add Column Migration

-- migrations/002_add_status.sql ALTER TABLE users ADD COLUMN status VARCHAR(50) DEFAULT 'active';

-- Rollback ALTER TABLE users DROP COLUMN status;

Rename/Migrate

-- Rename table ALTER TABLE users RENAME TO accounts;

-- Rename column ALTER TABLE users RENAME COLUMN name TO full_name;

Performance Analysis

Explain Queries

-- Explain query plan EXPLAIN ANALYZE SELECT * FROM users WHERE email = 'test@example.com';

-- Explain without running EXPLAIN SELECT * FROM users;

Find Slow Queries

PostgreSQL: Enable slow query log

In postgresql.conf:

log_min_duration_statement = 1000

View logs

tail -f /var/log/postgresql/postgresql.log

Using pg_stat_statements

SELECT query, calls, mean_time, total_time FROM pg_stat_statements ORDER BY total_time DESC LIMIT 10;

Index Recommendations

-- Find missing indexes from queries SELECT schemaname, relname, seq_scan, seq_tup_read, idx_scan, idx_tup_fetch FROM pg_stat_user_tables WHERE seq_scan > 100 ORDER BY seq_scan DESC;

Database Health Check

SQLite Health

#!/bin/bash

SQLite health check

DB="$1"

echo "=== SQLite Health Check ===" echo "Database: $DB" echo ""

echo "Size:" ls -lh "$DB" echo ""

echo "Table count:" sqlite3 "$DB" "SELECT COUNT(*) FROM sqlite_master WHERE type='table';" echo ""

echo "Index count:" sqlite3 "$DB" "SELECT COUNT(*) FROM sqlite_master WHERE type='index';" echo ""

echo "Integrity check:" sqlite3 "$DB" "PRAGMA integrity_check;"

PostgreSQL Health

#!/bin/bash

PostgreSQL health check

echo "=== PostgreSQL Health ===" echo ""

echo "Database size:" psql -U user -d db -c "SELECT pg_database_size(current_database());"

echo "Table sizes:" psql -U user -d db -c "SELECT relname, pg_size_pretty(pg_total_relation_size(relid)) FROM pg_catalog.pg_statio_user_tables ORDER BY pg_total_relation_size(relid) DESC LIMIT 5;"

echo "Active connections:" psql -U user -d db -c "SELECT count(*) FROM pg_stat_activity;"

echo "Long running queries:" psql -U user -d db -c "SELECT pid, now() - pg_stat_activity.query_start AS duration, query FROM pg_stat_activity WHERE state = 'active' AND query NOT ILIKE '%pg_stat_activity%' ORDER BY duration DESC LIMIT 5;"

Notes

  • Always backup before migrations

  • Use transactions for multi-step changes

  • Test migrations on staging first

  • Use parameterized queries to prevent SQL injection

  • Thepopebot stores data in SQLite at data/thepopebot.sqlite

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

vector-memory

No summary provided by upstream source.

Repository SourceNeeds Review
General

model-router

No summary provided by upstream source.

Repository SourceNeeds Review
General

rss-reader

No summary provided by upstream source.

Repository SourceNeeds Review
General

video-frames

No summary provided by upstream source.

Repository SourceNeeds Review