mig2示意图
一个从PostgreSQL迁移文件中提取数据库模式的工具 MCP通过运行临时数据库来发现架构。 当您处理一个包含大量文件的迁移文件夹的项目时,这很有用。
概述
mig2schema 获取一个包含PostgreSQL迁移文件的目录(.up.sql 和 .down.sql)并在运行迁移后提取得到的数据库模式。它使用测试容器启动一个临时PostgreSQL实例,运行迁移,然后提取模式信息。
安装
go build -o mig2schema用法
信息模式(默认)
显示人类可读的架构信息:
./mig2schema /path/to/migrations提取模式
输出可用于重新创建架构的SQL CREATE语句:
./mig2schema -e /path/to/migrations
./mig2schema --extract /path/to/migrationsPostgreSQL映像配置
默认情况下,该工具使用 postgres:16-alpine.你可以指定一个不同的PostgreSQL Docker镜像:
./mig2schema --pg-image postgres:17-alpine /path/to/migrations
./mig2schema --pg-image pgvector/pgvector:pg16 /path/to/migrations架构提取提供程序
该工具支持多个提供程序来提取模式:
- 本地的 (默认):使用SQL查询information_schema的内置提供程序
- pg_dump:使用PostgreSQL的pg_dump实用程序进行完整的DDL提取
# List available providers
./mig2schema --list-providers
# Use native provider (default)
./mig2schema -p native -e /path/to/migrations
# Use pg_dump provider (requires pg_dump in PATH, only supports extract mode)
./mig2schema -p pg_dump -e /path/to/migrations备注:pg_dump提供程序仅适用于提取模式(-e)并提供更完整的模式信息,包括外键、序列和所有约束。
迁移文件格式
该工具要求迁移文件遵循命名约定:
001_create_users.up.sql-向上迁移文件001_create_users.down.sql-向下迁移文件(可选)
文件按文件名的字母顺序执行。
例子
信息模式示例
./mig2schema examples/migrations
# Output:
# === 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)提取模式示例
使用本机提供程序:
./mig2schema -e examples/migrations
# Output:
# 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
# Output includes:
# - Complete CREATE TABLE statements
# - ALTER TABLE statements for sequences
# - Foreign key constraints
# - All indexes with proper syntax
# - Default values and constraints需求
- Docker(用于测试容器)
- 转到1.24.2+
- PostgreSQL客户端工具(可选,pg_dump提供程序需要)
使用Claude代码
此工具可用作Claude Code中的MCP(模型上下文协议)服务器:
claude mcp add mig2schema -- {path}/mig2schema --mcp哪里 {path} 是mig2schema二进制文件的完整路径(例如。, /Users/username/go/bin/mig2schema).
添加后,Claude Code可以使用以下工具:
提取模式
使用pg_dump从迁移文件中提取数据库模式,以获得完整的DDL输出。
参数:
migration_directory(必需):包含迁移文件的目录路径format(可选):输出格式-“sql”(默认且唯一选项)postgres_image(可选):要使用的PostgreSQL Docker镜像(默认:“postgres:16-alpine”)
Claude Code中的示例用法:
Use the extract_schema tool with migration_directory="./migrations"备注:MCP模式始终使用pg_dump提供程序并输出SQLDDL,以实现最完整、最准确的模式提取,包括外键、序列和所有约束。
validate_migrations
验证迁移文件而不运行它们。
参数:
migration_directory(必需):包含迁移文件的目录路径postgres_image(可选):要使用的PostgreSQL Docker镜像(默认:“postgres:16-alpine”)
