Mig2schema

Mig2schema

🚀 mig2schema

mig2schema是一款实用工具,它借助MCP从PostgreSQL迁移文件中提取数据库模式。通过运行临时数据库来发现模式,特别适用于处理包含大量迁移文件的项目。

🚀 快速开始

mig2schema能够读取包含PostgreSQL迁移文件(.up.sql.down.sql)的目录,并在运行迁移后提取最终的数据库模式。它利用testcontainers启动一个临时的PostgreSQL实例,运行迁移,然后提取模式信息。

✨ 主要特性

  • 多模式支持:支持信息模式和提取模式,满足不同场景下对数据库模式信息的获取需求。
  • 多提供者支持:支持多种模式提取提供者,如nativepg_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(必需):包含迁移文件的目录路径。
  • 0 关注
  • 0 收藏,8 浏览
  • system 提出于 2025-09-23 14:36

相似服务问题