List all tables in a database and show table structure (columns, types, constraints) for 30+ databases using DbCli. Use when user wants to explore database schema, see what tables exist, check table structure, or understand column definitions.
Scanned 2/12/2026
Install via CLI
openskills install majiayu000/claude-skill-registry---
name: dbcli-tables
description: List all tables in a database and show table structure (columns, types, constraints) for 30+ databases using DbCli. Use when user wants to explore database schema, see what tables exist, check table structure, or understand column definitions.
license: MIT
compatibility: Requires DbCli CLI tool (based on .NET 10 and SqlSugar). Supports Windows, Linux, macOS.
metadata:
tool: dbcli
version: "1.0.0"
category: database
operation-type: read-only
supported-databases: "30+"
allowed-tools: dbcli
---
## Command Style (Use PATH)
All examples use the plain command name `dbcli` (no directory prefix).
Ensure `dbcli` is on PATH instead of hardcoding paths like `.\.claude\skills\dbcli\dbcli.exe`.
# DbCli Tables Skill
List all tables and view table structures in databases.
## When to Use This Skill
- User wants to see all tables in a database
- User needs to check table structure or schema
- User asks "what tables exist" or "show me the database schema"
- User wants to see column names, types, or constraints
- User needs to explore an unfamiliar database
## Command Syntax
### List All Tables
```bash
dbcli -c "CONNECTION_STRING" [-t DATABASE_TYPE] [-f FORMAT] tables
```
### Show Table Structure
```bash
dbcli -c "CONNECTION_STRING" [-t DATABASE_TYPE] [-f FORMAT] columns TABLE_NAME
```
## Global Options
- `-c, --connection`: Database connection string (required)
- `-t, --db-type`: Database type (default: sqlite)
- `-f, --format`: Output format: `json` (default), `table`, `csv`
## List All Tables
### Basic Usage
```bash
# SQLite - JSON format (default)
dbcli -c "Data Source=app.db" tables
# Output: [{"TableName":"Users"},{"TableName":"Orders"},{"TableName":"Products"}]
# Table format (human-readable)
dbcli -c "Data Source=app.db" -f table tables
# Output:
# +-----------+
# | TableName |
# +-----------+
# | Users |
# | Orders |
# | Products |
# +-----------+
```
### Different Databases
```bash
# SQL Server
dbcli -c "Server=localhost;Database=mydb;Trusted_Connection=True" -t sqlserver -f table tables
# MySQL
dbcli -c "Server=localhost;Database=mydb;Uid=root;Pwd=xxxxxxxxxx" -t mysql -f table tables
# PostgreSQL
dbcli -c "Host=localhost;Database=mydb;Username=postgres;Password=xxxxxxxxxx" -t postgresql -f table tables
# Oracle
dbcli -c "Data Source=localhost:1521/orcl;User Id=system;Password=xxxxxxxxxx" -t oracle -f table tables
# MongoDB
dbcli -c "mongodb://localhost:27017/mydb" -t mongodb -f table tables
```
### Chinese Domestic Databases
```bash
# DaMeng (达梦)
dbcli -c "Server=localhost;User Id=SYSDBA;PWD=xxxxxxxxxx;DATABASE=mydb" -t dm -f table tables
# KingbaseES (人大金仓)
dbcli -c "Server=localhost;Port=54321;UID=system;PWD=xxxxxxxxxx;database=mydb" -t kdbndp -f table tables
# GaussDB
dbcli -c "Host=localhost;Port=8000;Database=mydb;Username=gaussdb;Password=xxxxxxxxxx" -t gaussdb -f table tables
```
## Show Table Structure
### Basic Column Information
```bash
# SQLite - Show Users table structure
dbcli -c "Data Source=app.db" -f table columns Users
# Output:
# +------------+----------+--------+------------+--------------+--------------+
# | ColumnName | DataType | Length | IsNullable | IsPrimaryKey | DefaultValue |
# +------------+----------+--------+------------+--------------+--------------+
# | Id | INTEGER | 0 | False | True | |
# | Name | TEXT | 0 | False | False | |
# | Email | TEXT | 0 | True | False | |
# | CreatedAt | TIMESTAMP| 0 | True | False | CURRENT_TIME |
# +------------+----------+--------+------------+--------------+--------------+
```
### JSON Output
```bash
# Get column info as JSON for programmatic use
dbcli -c "Data Source=app.db" columns Users
# Output: [
# {"ColumnName":"Id","DataType":"INTEGER","Length":0,"IsNullable":false,"IsPrimaryKey":true,"DefaultValue":""},
# {"ColumnName":"Name","DataType":"TEXT","Length":0,"IsNullable":false,"IsPrimaryKey":false,"DefaultValue":""},
# ...
# ]
```
### Multiple Tables
```bash
# Check structure of multiple tables
for table in Users Orders Products; do
echo "=== $table ==="
dbcli -c "Data Source=app.db" -f table columns $table
echo
done
```
## Use Cases
### 1. Database Discovery
```bash
# First, see what tables exist
dbcli -c "Data Source=unknown.db" -f table tables
# Then examine interesting tables
dbcli -c "Data Source=unknown.db" -f table columns Users
dbcli -c "Data Source=unknown.db" -f table columns Orders
```
### 2. Schema Documentation
```bash
#!/bin/bash
# Generate schema documentation
CONNECTION="Data Source=app.db"
OUTPUT="schema_doc.txt"
echo "Database Schema Documentation" > $OUTPUT
echo "Generated: $(date)" >> $OUTPUT
echo >> $OUTPUT
# List all tables
echo "=== Tables ===" >> $OUTPUT
dbcli -c "$CONNECTION" -f table tables >> $OUTPUT
echo >> $OUTPUT
# Get structure for each table
dbcli -c "$CONNECTION" tables | jq -r '.[].TableName' | while read table; do
echo "=== Table: $table ===" >> $OUTPUT
dbcli -c "$CONNECTION" -f table columns $table >> $OUTPUT
echo >> $OUTPUT
done
echo "Documentation saved to $OUTPUT"
```
### 3. Verify Table Exists
```bash
# Check if specific table exists
if dbcli -c "Data Source=app.db" tables | jq -r '.[].TableName' | grep -q "^Users$"; then
echo "Users table exists"
else
echo "Users table not found"
fi
```
### 4. Find Tables by Pattern
```bash
# Find all tables starting with "temp_"
dbcli -c "Data Source=app.db" tables | jq -r '.[].TableName' | grep "^temp_"
```
### 5. Column Validation
```bash
# Check if Email column exists in Users table
if dbcli -c "Data Source=app.db" columns Users | jq -r '.[].ColumnName' | grep -q "^Email$"; then
echo "Email column exists"
else
echo "Email column missing - need to add it"
fi
```
### 6. Primary Key Detection
```bash
# Find primary key column(s)
dbcli -c "Data Source=app.db" columns Users | jq -r '.[] | select(.IsPrimaryKey == true) | .ColumnName'
# Output: Id
```
### 7. Nullable Column Check
```bash
# List all nullable columns
dbcli -c "Data Source=app.db" columns Users | jq -r '.[] | select(.IsNullable == true) | .ColumnName'
```
## Programmatic Usage
### Python - List All Tables
```python
import subprocess
import json
result = subprocess.run([
'dbcli', '-c', 'Data Source=app.db',
'tables'
], capture_output=True, text=True)
tables = json.loads(result.stdout)
for table in tables:
print(f"Table: {table['TableName']}")
```
### Python - Inspect Schema
```python
import subprocess
import json
def get_table_info(connection, table_name):
"""Get detailed table information"""
result = subprocess.run([
'dbcli', '-c', connection,
'columns', table_name
], capture_output=True, text=True)
columns = json.loads(result.stdout)
print(f"\nTable: {table_name}")
print(f"Total columns: {len(columns)}")
print("\nPrimary Keys:")
for col in columns:
if col['IsPrimaryKey']:
print(f" - {col['ColumnName']} ({col['DataType']})")
print("\nNullable Columns:")
for col in columns:
if col['IsNullable']:
print(f" - {col['ColumnName']}")
# Usage
get_table_info('Data Source=app.db', 'Users')
```
### Node.js - Schema Exploration
```javascript
const { execSync } = require('child_process');
function exploreDatabaseSchema(connection) {
// Get all tables
const tablesJson = execSync(`dbcli -c "${connection}" tables`).toString();
const tables = JSON.parse(tablesJson);
console.log(`Found ${tables.length} tables:\n`);
tables.forEach(table => {
console.log(`Table: ${table.TableName}`);
// Get columns for each table
const columnsJson = execSync(
`dbcli -c "${connection}" columns ${table.TableName}`
).toString();
const columns = JSON.parse(columnsJson);
columns.forEach(col => {
const pk = col.IsPrimaryKey ? ' [PK]' : '';
const nullable = col.IsNullable ? ' [NULL]' : ' [NOT NULL]';
console.log(` - ${col.ColumnName}: ${col.DataType}${pk}${nullable}`);
});
console.log();
});
}
// Usage
exploreDatabaseSchema('Data Source=app.db');
```
### PowerShell - Schema Comparison
```powershell
function Compare-DatabaseSchemas {
param(
[string]$Connection1,
[string]$Connection2
)
$tables1 = dbcli -c $Connection1 tables | ConvertFrom-Json | Select-Object -ExpandProperty TableName
$tables2 = dbcli -c $Connection2 tables | ConvertFrom-Json | Select-Object -ExpandProperty TableName
Write-Host "Tables only in Database 1:"
$tables1 | Where-Object { $_ -notin $tables2 }
Write-Host "`nTables only in Database 2:"
$tables2 | Where-Object { $_ -notin $tables1 }
Write-Host "`nCommon tables:"
$common = $tables1 | Where-Object { $_ -in $tables2 }
$common
# Compare column structure for common tables
foreach ($table in $common) {
$cols1 = dbcli -c $Connection1 columns $table | ConvertFrom-Json
$cols2 = dbcli -c $Connection2 columns $table | ConvertFrom-Json
if (Compare-Object $cols1 $cols2 -Property ColumnName, DataType) {
Write-Host "`nDifference in table: $table"
}
}
}
# Usage
Compare-DatabaseSchemas -Connection1 "Data Source=db1.db" -Connection2 "Data Source=db2.db"
```
## Output Formats
### JSON Format (Default)
```bash
dbcli -c "Data Source=app.db" tables
# [{"TableName":"Users"},{"TableName":"Orders"}]
dbcli -c "Data Source=app.db" columns Users
# [{"ColumnName":"Id","DataType":"INTEGER","Length":0,...},...]
```
### Table Format (Human-Readable)
```bash
dbcli -c "Data Source=app.db" -f table tables
# +-----------+
# | TableName |
# +-----------+
# | Users |
# +-----------+
dbcli -c "Data Source=app.db" -f table columns Users
# +------------+----------+--------+------------+--------------+
# | ColumnName | DataType | Length | IsNullable | IsPrimaryKey |
# +------------+----------+--------+------------+--------------+
```
### CSV Format
```bash
dbcli -c "Data Source=app.db" -f csv tables > tables.csv
# TableName
# Users
# Orders
dbcli -c "Data Source=app.db" -f csv columns Users > users_schema.csv
# ColumnName,DataType,Length,IsNullable,IsPrimaryKey,DefaultValue
# Id,INTEGER,0,False,True,
# Name,TEXT,0,False,False,
```
## Common Patterns
### Quick Table Count
```bash
dbcli -c "Data Source=app.db" tables | jq '. | length'
```
### Find Large Tables
```bash
# List tables with row counts
dbcli -c "Data Source=app.db" tables | jq -r '.[].TableName' | while read table; do
count=$(dbcli -c "Data Source=app.db" query "SELECT COUNT(*) as cnt FROM $table" | jq -r '.[0].cnt')
echo "$table: $count rows"
done
```
### Generate CREATE TABLE from Existing
```bash
# SQLite - Get original CREATE statement
dbcli -c "Data Source=app.db" query "SELECT sql FROM sqlite_master WHERE type='table' AND name='Users'"
```
### Schema Diff Tool
```bash
#!/bin/bash
# schema_diff.sh - Compare two database schemas
DB1="$1"
DB2="$2"
echo "Comparing schemas: $DB1 vs $DB2"
# Compare table lists
diff <(dbcli -c "Data Source=$DB1" tables | jq -r '.[].TableName' | sort) \
<(dbcli -c "Data Source=$DB2" tables | jq -r '.[].TableName' | sort)
```
## Integration with Other Skills
### Use with Query Skill
```bash
# First, find all tables
tables=$(dbcli -c "Data Source=app.db" tables | jq -r '.[].TableName')
# Then query each table
for table in $tables; do
echo "=== Sample from $table ==="
dbcli -c "Data Source=app.db" -f table query "SELECT * FROM $table LIMIT 3"
done
```
### Use with Export Skill
```bash
# Export all tables found in database
dbcli -c "Data Source=app.db" tables | jq -r '.[].TableName' | while read table; do
echo "Exporting $table..."
dbcli -c "Data Source=app.db" export $table > "${table}_backup.sql"
done
```
No comments yet. Be the first to comment!