Como Automatizar Migracoes de DB com Claude Code
Aprenda a automate db migrations usando o Claude Code. Inclui exemplos praticos de codigo e orientacao passo a passo.
DBマイグレーションの悩みをClaude Codeで解決
スキーマ変更のたびにマイグレーションファイルを手書きするのは手間がかかり、ミスも起きやすい作業です。Claude Codeを使えば、スキーマの設計変更からマイグレーション生成、シードデータの更新まで一気に対応できます。
Prismaでのマイグレーション
スキーマ設計からマイグレーション実行まで
> Prismaスキーマに以下のテーブルを追加して、マイグレーションを生成・適用して。
>
> テーブル: Order
> - id: UUID, 主キー
> - userId: User への外部キー
> - items: OrderItem[] (1対多)
> - totalAmount: Decimal
> - status: enum (pending, confirmed, shipped, delivered, cancelled)
> - createdAt, updatedAt
Claude Codeが生成するスキーマの例です。
enum OrderStatus {
pending
confirmed
shipped
delivered
cancelled
}
model Order {
id String @id @default(uuid())
userId String
user User @relation(fields: [userId], references: [id])
items OrderItem[]
totalAmount Decimal @db.Decimal(10, 2)
status OrderStatus @default(pending)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@index([userId])
@@index([status])
}
model OrderItem {
id String @id @default(uuid())
orderId String
order Order @relation(fields: [orderId], references: [id], onDelete: Cascade)
productId String
quantity Int
price Decimal @db.Decimal(10, 2)
}
その後、Claude Codeは自動でマイグレーションコマンドを実行します。
npx prisma migrate dev --name add_order_tables
Drizzleでのマイグレーション
Drizzle ORMを使う場合も同様に指示できます。
> Drizzle ORMのスキーマにOrderテーブルを追加して。
> マイグレーションファイルも生成して。
import { pgTable, uuid, decimal, timestamp, pgEnum } from "drizzle-orm/pg-core";
import { relations } from "drizzle-orm";
import { users } from "./users";
export const orderStatusEnum = pgEnum("order_status", [
"pending", "confirmed", "shipped", "delivered", "cancelled",
]);
export const orders = pgTable("orders", {
id: uuid("id").defaultRandom().primaryKey(),
userId: uuid("user_id").notNull().references(() => users.id),
totalAmount: decimal("total_amount", { precision: 10, scale: 2 }).notNull(),
status: orderStatusEnum("status").default("pending").notNull(),
createdAt: timestamp("created_at").defaultNow().notNull(),
updatedAt: timestamp("updated_at").defaultNow().notNull(),
});
export const ordersRelations = relations(orders, ({ one, many }) => ({
user: one(users, { fields: [orders.userId], references: [users.id] }),
items: many(orderItems),
}));
既存スキーマの変更
カラム追加やリネームなど、既存テーブルの変更も安全に処理できます。
> users テーブルに以下の変更を加えて。
> - phoneNumber カラムを追加(nullable)
> - name を firstName と lastName に分割
> - 既存データの移行ロジックも含めて
Claude Codeはデータ移行スクリプト付きのマイグレーションを生成します。
-- マイグレーション: split_user_name
ALTER TABLE "users" ADD COLUMN "first_name" VARCHAR(100);
ALTER TABLE "users" ADD COLUMN "last_name" VARCHAR(100);
ALTER TABLE "users" ADD COLUMN "phone_number" VARCHAR(20);
-- 既存データの移行
UPDATE "users"
SET
"first_name" = split_part("name", ' ', 1),
"last_name" = CASE
WHEN array_length(string_to_array("name", ' '), 1) > 1
THEN split_part("name", ' ', 2)
ELSE ''
END;
ALTER TABLE "users" ALTER COLUMN "first_name" SET NOT NULL;
ALTER TABLE "users" ALTER COLUMN "last_name" SET NOT NULL;
ALTER TABLE "users" DROP COLUMN "name";
シードデータの生成
開発用のテストデータも合わせて作れます。
> Order テーブルのシードデータを20件作成して。
> 各ステータスが均等に分布するように。
> リアルなダミーデータにして。
マイグレーションの安全性を確認
> 現在のマイグレーション履歴を確認して、
> 本番適用前に問題がないかチェックして。
> 特にデータ消失リスクのある変更を指摘して。
API開発でのDB連携パターンについてはAPI開発を高速化する方法で解説しています。また、CLAUDE.mdにデータベース関連のルールを書いておくと安全性が向上します。書き方のコツはCLAUDE.mdの書き方完全ガイドを参照してください。
Summary
Claude Codeを使えば、DBスキーマの設計から変更、マイグレーション生成、シードデータ作成まで一貫して自動化できます。特にデータ移行ロジックを含む複雑なマイグレーションで威力を発揮します。
Prismaの詳しい使い方はPrisma公式ドキュメント、Claude Codeの機能についてはAnthropic公式ドキュメントを参照してください。
PDF gratuito: Cheatsheet do Claude Code em 5 minutos
Basta informar seu e-mail e enviamos na hora o cheatsheet em uma página A4.
Cuidamos dos seus dados pessoais e nunca enviamos spam.
Sobre o autor
Masa
Engenheiro apaixonado por Claude Code. Mantém o claudecode-lab.com, uma mídia tech em 10 idiomas com mais de 2.000 páginas.
Artigos relacionados
7 verificações antes de publicar todos os dias um artigo multilíngue sobre Claude Code
Uma checklist prática para publicar artigos multilíngues sobre Claude Code todos os dias sem esquecer idiomas, quebrar CTAs ou deixar páginas antigas no ar.
O que e Codex Automations? Conteudo, analise e deploy com IA enquanto voce dorme
Guia pratico para usar Codex Automations em analytics, artigos, CTA, deploy e monetizacao.
Desenhe Firestore com Claude Code: comece pelas consultas
Workflow prático para Firestore com Claude Code: schema orientado por consultas, índices, custos, regras de segurança e TypeScript.