ワンクリックで
dbcli-export-schema
Export database schema objects (procedures, functions, triggers, views, indexes) as SQL scripts for backup
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Export database schema objects (procedures, functions, triggers, views, indexes) as SQL scripts for backup
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Compare results of two SQL queries to verify if they produce identical data. Checks structure, record count, and data content using MINUS/EXCEPT operations. Use when user needs to validate query equivalence, compare view logic, verify refactoring, or check data consistency.
Execute DDL (Data Definition Language) statements - CREATE, ALTER, DROP tables, indexes, views on 30+ databases using DbCli. CRITICAL - requires mandatory backup before DROP/ALTER operations. Use when user needs to create schema, modify structure, or drop database objects.
Execute INSERT, UPDATE, DELETE statements on 30+ databases using DbCli. Includes mandatory backup procedures before destructive operations. Use when user needs to modify data, insert records, update fields, or delete rows. Always create backups first.
Export table data as SQL INSERT statements from 30+ databases using DbCli. Essential for creating backups before dangerous modifications (UPDATE/DELETE/DROP). Use when user needs to backup data, migrate tables, or create portable SQL dumps.
Manage database indexes (CREATE/DROP INDEX operations)
Interactive SQL mode for 30+ databases using DbCli. Provides REPL environment for exploratory queries, rapid prototyping, and database administration. Includes safety prompts before dangerous operations (UPDATE/DELETE/DROP). Use when user wants interactive database session.
| name | dbcli-export-schema |
| description | Export database schema objects (procedures, functions, triggers, views, indexes) as SQL scripts for backup |
| 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","supported-databases":"30+","operation-type":"backup-export-schema","safety-level":"safe","requires-backup":"no","tags":["dbcli","sql","backup","schema","ddl","export","procedures","functions","triggers","views","indexes"],"repository":"https://github.com/your-repo/dbcli"} |
| allowed-tools | dbcli |
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.
Export database schema objects (stored procedures, functions, triggers, views, indexes) as SQL DDL scripts for backup and recovery. This skill is essential for protecting database objects before DROP or ALTER operations.
Safety Level: Safe (read-only operation)
Requires Backup: No (this tool creates backups)
# Export all schema objects
export DBCLI_CONNECTION="Server=.;Database=mydb"
export DBCLI_DBTYPE="sqlserver"
dbcli export-schema all -o backup_schema.sql
# Export all schema objects as separate files (per object)
dbcli export-schema all --output-dir ./schema_export
# Export only stored procedures
dbcli export-schema procedure -o backup_procedures.sql
# Export only indexes
export DBCLI_CONNECTION="Data Source=app.db"
dbcli export-schema index -o backup_indexes.sql
# Export only triggers
dbcli export-schema trigger -o backup_triggers.sql
# Filter by name pattern
export DBCLI_CONNECTION="Server=.;Database=mydb"
export DBCLI_DBTYPE="sqlserver"
dbcli export-schema procedure --name "sp_User*"
# Set environment variables first:
# export DBCLI_CONNECTION="connection-string"
# export DBCLI_DBTYPE="database-type"
dbcli export-schema <type> [options]
<type> - Object type to export:
all - All schema objects (default)procedure - Stored proceduresfunction - User-defined functionstrigger - Triggersview - Viewsindex - Indexes-n, --name <pattern> - Filter objects by name (supports wildcards)-o, --output <file> - Save to file (default: console output)--output-dir <dir> - Save as separate files under a directory (one file per object)DBCLI_CONNECTION: Database connection stringDBCLI_DBTYPE: Database type-t, --db-type <type> - Database type (sqlite, sqlserver, mysql, postgresql, etc.)--config <path> - Configuration file pathexport DBCLI_CONNECTION="Data Source=app.db"
# Export all triggers
dbcli export-schema trigger
# Export all indexes to file
dbcli export-schema index -o backup_indexes.sql
# Export all schema objects
dbcli export-schema all -o backup_all.sql
export DBCLI_CONNECTION="Server=.;Database=mydb;Trusted_Connection=True"
export DBCLI_DBTYPE="sqlserver"
# Export all stored procedures
dbcli export-schema procedure -o procedures_backup.sql
# Export specific procedures
dbcli export-schema procedure --name "sp_User*" -o user_procedures.sql
# Export all functions
dbcli export-schema function -o functions_backup.sql
# Export all triggers
dbcli export-schema trigger -o triggers_backup.sql
export DBCLI_CONNECTION="Server=localhost;Database=mydb;Uid=root;Pwd=xxxxxxxxxx"
export DBCLI_DBTYPE="mysql"
# Export all procedures
dbcli export-schema procedure -o procedures.sql
# Export all triggers
dbcli export-schema trigger -o triggers.sql
# Export all indexes
dbcli export-schema index -o indexes.sql
export DBCLI_CONNECTION="Host=localhost;Database=mydb;Username=postgres;Password=xxxxxxxxxx"
export DBCLI_DBTYPE="postgresql"
# Export all functions
dbcli export-schema function -o functions.sql
# Export all triggers
dbcli export-schema trigger -o triggers.sql
# Export all views
dbcli export-schema view -o views.sql
# Backup all schema objects before deployment
# If appsettings.json is in the current working directory, DbCli auto-loads it
dbcli export-schema all -o "backup_$(date +%Y%m%d_%H%M%S).sql"
export DBCLI_CONNECTION="Server=.;Database=mydb"
export DBCLI_DBTYPE="sqlserver"
# 1. Backup existing procedures
dbcli export-schema procedure -o old_procedures.sql
# 2. Drop and recreate procedures
dbcli ddl "DROP PROCEDURE sp_OldProc"
dbcli ddl "CREATE PROCEDURE sp_NewProc..."
# 3. Rollback if needed (execute old_procedures.sql)
export DBCLI_CONNECTION="Data Source=app.db"
# 1. Backup current indexes
dbcli export-schema index -o indexes_before.sql
# 2. Drop inefficient indexes
dbcli ddl "DROP INDEX idx_slow"
# 3. Create optimized indexes
dbcli ddl "CREATE INDEX idx_fast ON Table(col1, col2)"
# 4. Export new indexes
dbcli export-schema index -o indexes_after.sql
# Export all schema from source database
export DBCLI_CONNECTION="Server=source;Database=db"
export DBCLI_DBTYPE="sqlserver"
dbcli export-schema all -o schema_export.sql
# Review and edit schema_export.sql if needed
# Apply to target database
# Execute the SQL scripts manually or via dbcli ddl command
#!/bin/bash
# backup_schema.sh
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="./schema_backups"
mkdir -p $BACKUP_DIR
# Backup all schema objects
dbcli --config production.json \
export-schema all \
-o "$BACKUP_DIR/schema_${TIMESTAMP}.sql"
echo "Schema backed up to: $BACKUP_DIR/schema_${TIMESTAMP}.sql"
# Keep only last 30 days of backups
find $BACKUP_DIR -name "schema_*.sql" -mtime +30 -delete
# Step 1: Export schema object
export DBCLI_CONNECTION="Data Source=app.db"
dbcli export-schema trigger -o backup_triggers.sql
# Step 2: Review backup file
cat backup_triggers.sql
# Step 3: Perform dangerous operation
dbcli ddl "DROP TRIGGER update_timestamp"
# Step 4: Verify deletion
dbcli export-schema trigger
# (should show no triggers)
# Method 1: Extract and execute CREATE statement
TRIGGER_SQL=$(grep -A 10 "CREATE TRIGGER" backup_triggers.sql | sed '/^GO$/q')
dbcli ddl "$TRIGGER_SQL"
# Method 2: Execute entire backup file (if single object)
dbcli ddl -F backup_triggers.sql
# Verify restoration
dbcli export-schema trigger
The exported SQL script includes:
-- Schema Export for <DatabaseType>
-- Generated: YYYY-MM-DD HH:MM:SS
-- Object Type: <type>
-- ========================================
-- Stored Procedures
-- ========================================
-- Procedure: ProcedureName
CREATE PROCEDURE ProcedureName...
GO
-- ========================================
-- User Functions
-- ========================================
-- Function: FunctionName
CREATE FUNCTION FunctionName...
GO
-- ========================================
-- Triggers
-- ========================================
-- Trigger: TriggerName
CREATE TRIGGER TriggerName...
GO
-- ========================================
-- Views
-- ========================================
-- View: ViewName
CREATE VIEW ViewName...
GO
-- ========================================
-- Indexes
-- ========================================
-- Indexes for table: TableName
CREATE INDEX IndexName ON TableName(Column);
| Database | Procedures | Functions | Triggers | Views | Indexes |
|---|---|---|---|---|---|
| SQL Server | ✅ | ✅ | ✅ | ✅ | ✅ |
| MySQL | ✅ | ✅ | ✅ | ✅ | ✅ |
| PostgreSQL | ✅ | ✅ | ✅ | ✅ | ✅ |
| SQLite | ❌ | ❌ | ✅ | ✅ | ✅ |
| Oracle | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ⚠️ |
| Others | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ⚠️ |
Legend:
# ❌ BAD: Drop without backup
dbcli ddl "DROP PROCEDURE sp_ImportantLogic"
# ✅ GOOD: Backup first
export DBCLI_CONNECTION="..."
dbcli export-schema procedure --name "sp_ImportantLogic" -o backup.sql
dbcli ddl "DROP PROCEDURE sp_ImportantLogic"
# Create timestamped backup files
export DBCLI_CONNECTION="..."
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
dbcli export-schema all -o "schema_backup_${TIMESTAMP}.sql"
# Export to version-controlled directory
export DBCLI_CONNECTION="..."
dbcli export-schema all -o "database/schema/procedures.sql"
git add database/schema/procedures.sql
git commit -m "Backup procedures before refactoring"
# Add to crontab (Linux) or Task Scheduler (Windows)
# Daily backup at 2 AM
0 2 * * * /usr/local/bin/dbcli --config /etc/dbcli.json export-schema all -o /backups/schema_$(date +\%Y\%m\%d).sql
# Periodically test that backups can be restored
export DBCLI_CONNECTION="..."
dbcli export-schema trigger -o test_backup.sql
dbcli ddl "DROP TRIGGER test_trigger"
# Restore from backup...
# Verify restoration works
Connection Failed
Error: Unable to connect to database
-t option)No Objects Found
-- Stored Procedures
-- (empty)
Permission Denied
Error: Permission denied to read schema
# Backup before procedure changes
export DBCLI_CONNECTION="..."
dbcli export-schema procedure -o backup.sql
# Use dbcli-procedure skill to modify
dbcli ddl "ALTER PROCEDURE..."
# Backup before index changes
export DBCLI_CONNECTION="..."
dbcli export-schema index -o backup.sql
# Use dbcli-index skill to drop/create
dbcli ddl "DROP INDEX..."
# Backup triggers before DML that might affect them
export DBCLI_CONNECTION="..."
dbcli export-schema trigger -o backup.sql
# Use dbcli-exec for data operations
dbcli exec "DELETE FROM..."
{
"ConnectionString": "Server=.;Database=mydb;Trusted_Connection=True",
"DbType": "sqlserver"
}
# Export using config
# If appsettings.json is in the current working directory, DbCli auto-loads it
dbcli export-schema all -o backup.sql
export DBCLI_CONNECTION="Server=.;Database=mydb;Trusted_Connection=True"
export DBCLI_DBTYPE="sqlserver"
dbcli export-schema all
Different databases have varying levels of built-in support for extracting DDL (Data Definition Language):
| Database | Native GET_DDL Support | Common Method |
|---|---|---|
| Oracle | ✅ Yes | DBMS_METADATA.GET_DDL |
| DaMeng | ✅ Yes | DBMS_METADATA.GET_DDL |
| Snowflake | ✅ Yes | GET_DDL(...) |
| MySQL / MariaDB / TiDB | ✅ Yes (different syntax) | SHOW CREATE TABLE/VIEW/... |
| PostgreSQL | ❌ No unified function | pg_get_viewdef, pg_dump |
| Microsoft SQL Server | ❌ No native function | OBJECT_DEFINITION, sp_helptext |
| SQLite | ❌ No native function | sqlite_master table |
| IBM DB2 | ❌ No unified function | db2look utility |
Note: DbCli abstracts these differences and provides unified export-schema command across all supported databases. The implementation internally uses the appropriate method for each database type.
# Before changes
export DBCLI_CONNECTION="..."
dbcli export-schema procedure -o procedures_before.sql
# Make changes...
# After changes
dbcli export-schema procedure -o procedures_after.sql
# Compare
diff procedures_before.sql procedures_after.sql
# Export each type to separate files
export DBCLI_CONNECTION="..."
for type in procedure function trigger view index; do
dbcli export-schema $type -o "backup_${type}.sql"
done
# Find all procedures containing "User"
export DBCLI_CONNECTION="..."
dbcli export-schema procedure | grep -i "user"
#!/bin/bash
# package_schema.sh
export DBCLI_CONNECTION="..."
mkdir -p deployment/schema
dbcli export-schema procedure -o deployment/schema/procedures.sql
dbcli export-schema function -o deployment/schema/functions.sql
dbcli export-schema trigger -o deployment/schema/triggers.sql
dbcli export-schema view -o deployment/schema/views.sql
dbcli export-schema index -o deployment/schema/indexes.sql
tar -czf schema_deployment.tar.gz deployment/
MIT License - See LICENSE file for details