mig2schema
是一款实用工具,它借助MCP从PostgreSQL迁移文件中提取数据库模式。通过运行临时数据库来发现模式,特别适用于处理包含大量迁移文件的项目。
mig2schema
能够读取包含PostgreSQL迁移文件(.up.sql
和.down.sql
)的目录,并在运行迁移后提取最终的数据库模式。它利用testcontainers
启动一个临时的PostgreSQL实例,运行迁移,然后提取模式信息。
native
和pg_dump
,可根据需求选择合适的提供者。go build -o mig2schema
显示人类可读的模式信息:
./mig2schema /path/to/migrations
输出可用于重新创建模式的SQL CREATE
语句:
./mig2schema -e /path/to/migrations
./mig2schema --extract /path/to/migrations
该工具支持多种模式提取提供者:
information_schema
的内置提供者。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语句
# - 外键约束
# - 所有具有正确语法的索引
# - 默认值和约束
testcontainers
。pg_dump
提供者需要)。该工具可作为MCP(Model Context Protocol)服务器在Claude Code中使用:
claude mcp add mig2schema -- {path}/mig2schema --mcp
其中{path}
是mig2schema
二进制文件的完整路径(例如,/Users/username/go/bin/mig2schema
)。
集成后,Claude Code可以使用以下工具:
使用pg_dump
从迁移文件中提取数据库模式以获得完整的DDL输出。
参数:
migration_directory
(必需):包含迁移文件的目录路径。format
(可选):输出格式 - "sql"(默认且唯一选项)。在Claude Code中的示例用法:
Use the extract_schema tool with migration_directory="./migrations"
⚠️ 重要提示
MCP模式始终使用
pg_dump
提供者,并输出SQL DDL以进行最完整、最准确的模式提取,包括外键、序列和所有约束。
在不运行迁移文件的情况下验证它们。
参数:
migration_directory
(必需):包含迁移文件的目录路径。