README
🚀 mig2schema
mig2schema是一款实用工具,它借助MCP从PostgreSQL迁移文件中提取数据库模式。通过运行临时数据库来发现模式,特别适用于处理包含大量迁移文件的项目。
🚀 快速开始
mig2schema能够读取包含PostgreSQL迁移文件(.up.sql和.down.sql)的目录,并在运行迁移后提取最终的数据库模式。它利用testcontainers启动一个临时的PostgreSQL实例,运行迁移,然后提取模式信息。
✨ 主要特性
- 多模式支持:支持信息模式和提取模式,满足不同场景下对数据库模式信息的获取需求。
- 多提供者支持:支持多种模式提取提供者,如
native和pg_dump,可根据需求选择合适的提供者。 - MCP集成:可作为MCP(Model Context Protocol)服务器在Claude Code中使用,方便进行数据库模式的提取和迁移文件的验证。
📦 安装指南
go build -o mig2schema
💻 使用示例
基础用法
信息模式(默认)
显示人类可读的模式信息:
./mig2schema /path/to/migrations
提取模式
输出可用于重新创建模式的SQL CREATE语句:
./mig2schema -e /path/to/migrations
./mig2schema --extract /path/to/migrations
模式提取提供者
该工具支持多种模式提取提供者:
- native(默认):使用SQL查询
information_schema的内置提供者。 - pg_dump:使用PostgreSQL的
pg_dump实用工具进行完整的DDL提取。
# 列出可用的提供者
./mig2schema --list-providers
# 使用native提供者(默认)
./mig2schema -p native -e /path/to/migrations
# 使用pg_dump提供者(需要将pg_dump添加到PATH中,仅支持提取模式)
./mig2schema -p pg_dump -e /path/to/migrations
⚠️ 重要提示
pg_dump提供者仅适用于提取模式(-e),并能提供更完整的模式信息,包括外键、序列和所有约束。
高级用法
迁移文件格式示例
该工具期望迁移文件遵循以下命名约定:
001_create_users.up.sql- 迁移上文件001_create_users.down.sql- 迁移下文件(可选)
文件按文件名的字母顺序执行。
示例输出
信息模式示例
./mig2schema examples/migrations
# 输出:
# === DATABASE SCHEMA ===
# Table: users
# Columns:
# - id integer NOT NULL (PRIMARY KEY)
# - email character varying NOT NULL
# - username character varying NOT NULL
# Indexes:
# - idx_users_email on (email)
# - users_email_key on (email) (UNIQUE)
提取模式示例
使用native提供者:
./mig2schema -e examples/migrations
# 输出:
# create table users (
# id integer not null default nextval('users_id_seq'::regclass),
# email varchar(255) not null,
# username varchar(255) not null,
# primary key (id)
# );
#
# create index idx_users_email on users (email);
# create unique index users_email_key on users (email);
使用pg_dump提供者(输出更完整):
./mig2schema -p pg_dump -e examples/migrations
# 输出包括:
# - 完整的CREATE TABLE语句
# - 用于序列的ALTER TABLE语句
# - 外键约束
# - 所有具有正确语法的索引
# - 默认值和约束
🔧 技术细节
运行要求
- Docker:用于
testcontainers。 - Go 1.24.2+:程序运行的基础环境。
- PostgreSQL客户端工具:(可选,
pg_dump提供者需要)。
与Claude Code集成
该工具可作为MCP(Model Context Protocol)服务器在Claude Code中使用:
claude mcp add mig2schema -- {path}/mig2schema --mcp
其中{path}是mig2schema二进制文件的完整路径(例如,/Users/username/go/bin/mig2schema)。
集成后,Claude Code可以使用以下工具:
extract_schema
使用pg_dump从迁移文件中提取数据库模式以获得完整的DDL输出。
参数:
migration_directory(必需):包含迁移文件的目录路径。format(可选):输出格式 - "sql"(默认且唯一选项)。
在Claude Code中的示例用法:
Use the extract_schema tool with migration_directory="./migrations"
⚠️ 重要提示
MCP模式始终使用
pg_dump提供者,并输出SQL DDL以进行最完整、最准确的模式提取,包括外键、序列和所有约束。
validate_migrations
在不运行迁移文件的情况下验证它们。
参数:
migration_directory(必需):包含迁移文件的目录路径。
微信扫一扫