Databases Integration (Natural Language to SQL)
Query databases using natural language with the Databases feature.
Overview
The Databases integration allows users to query databases using natural language instead of writing SQL. It translates natural language questions into SQL queries and displays results.
Key Features:
- Natural language to SQL translation
- Support for multiple databases (PostgreSQL, MySQL, etc.)
- Visual query builder
- Query history
- Result visualization
Access Databases
Web Interface
# Access Databases UI
https://YOUR_DATABASES_DOMAIN
# Example
https://databases.example.com
Authentication
Uses Chatty AI authentication:
- Login with your Chatty AI credentials
- Same user management
- No separate account needed
Configuration
Environment Variables
# Databases Domain
DATABASES_DOMAIN=databases.example.com
DATABASES_URL=https://databases.example.com
# Databases Configuration
ENABLE_DATABASES=true
DATABASES_GENERATION_MODEL=gpt-4o-mini
See Core Application Variables for all options.
Connecting Data Sources
Step 1: Add Data Source
- Login to Databases UI
- Click "Add Data Source"
- Select database type:
- PostgreSQL
- MySQL
- SQLite
- Others
Step 2: Configure Connection
PostgreSQL Example:
Host: your-db-host.com
Port: 5432
Database: your_database
Username: readonly_user
Password: ••••••••••
MySQL Example:
Host: mysql-server.com
Port: 3306
Database: mydb
Username: readonly_user
Password: ••••••••••
Step 3: Test Connection
Click "Test Connection" to verify settings.
Step 4: Save
Click "Save" to add the data source.
Using Natural Language Queries
Example Queries
Simple Query:
How many users are in the database?
Filtered Query:
Show me all orders from last month
Aggregation:
What is the average order value by customer?
Join Query:
List customers with their total order count
Complex Query:
Show top 10 products by revenue in Q4 2023
Query Process
- User enters natural language question
- AI generates SQL query
- User reviews generated SQL
- User approves or modifies query
- Query executes against database
- Results displayed in table/chart
Security Best Practices
1. Read-Only Database User
Always use read-only database accounts:
PostgreSQL:
-- Create read-only user
CREATE USER databases_readonly WITH PASSWORD 'secure_password';
-- Grant connect
GRANT CONNECT ON DATABASE mydb TO databases_readonly;
-- Grant select on all tables
GRANT SELECT ON ALL TABLES IN SCHEMA public TO databases_readonly;
-- Grant select on future tables
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT ON TABLES TO databases_readonly;
MySQL:
-- Create read-only user
CREATE USER 'databases_readonly'@'%' IDENTIFIED BY 'secure_password';
-- Grant select only
GRANT SELECT ON mydb.* TO 'databases_readonly'@'%';
FLUSH PRIVILEGES;
2. Network Security
Restrict database access:
-- PostgreSQL: Allow only from Databases container
# pg_hba.conf
host mydb databases_readonly 172.18.0.0/16 md5
-- MySQL: Limit by host
CREATE USER 'databases_readonly'@'172.18.0.%' IDENTIFIED BY 'password';
3. Query Limits
Set query limits to prevent resource exhaustion:
- Row limit: 1000 rows default
- Timeout: 30 seconds
- Memory limit: 512MB
Troubleshooting
Cannot Connect to Database
# Check database is accessible
telnet your-db-host 5432
# Check firewall rules
sudo ufw status
# Verify credentials
psql -h your-db-host -U databases_readonly -d mydb
# Check Databases logs
docker compose logs chattydatabases-ai-service
Query Generation Fails
# Check AI service is running
docker compose ps chattydatabases-ai-service
# Check API key configured
docker compose exec chattydatabases-ai-service env | grep OPENAI_API_KEY
# View logs
docker compose logs chattydatabases-ai-service --tail=100
Slow Queries
# Check database performance
# Add indexes to frequently queried columns
# Increase query timeout
# In Databases UI: Settings → Query Timeout
# Optimize database
VACUUM ANALYZE; # PostgreSQL
OPTIMIZE TABLE; # MySQL
Advanced Features
Custom SQL
Users can write custom SQL directly:
- Click "SQL Mode"
- Write SQL query
- Execute
- View results
Query Templates
Save frequently used queries as templates:
- Execute query
- Click "Save as Template"
- Name template
- Reuse later
Export Results
Export query results:
- CSV format
- JSON format
- Excel format
Visualizations
Create charts from query results:
- Bar charts
- Line charts
- Pie charts
- Tables
Example Use Cases
1. Business Analytics
What were our top 5 products by revenue last quarter?
2. Customer Insights
Show me customers who haven't ordered in 90 days
3. Inventory Management
Which products have stock below 10 units?
4. Sales Reporting
Compare sales by region for this year vs last year
Integration with Chatty AI
Query from Chat
Users can query databases directly from Chatty AI chat:
User: @databases How many active users do we have?
Chatty AI: [Queries database via Databases integration]
You have 1,234 active users.
Workflow Integration
Use with n8n workflows:
- Trigger: Schedule
- Action: Query database via Databases
- Action: Process results
- Action: Send report
Related Documentation
- Integrations Overview - All integrations
- Core Application Variables - Databases configuration
- n8n Integration - Workflow automation
- Post-Install Validation - Testing Databases