Como automatizar migraciones de base de datos con Claude Code
Aprende a automatizar migraciones de base de datos usando Claude Code. Incluye ejemplos de codigo practicos y guia paso a paso.
Resolviendo los problemas de migraciones de BD con Claude Code
Escribir manualmente archivos de migracion con cada cambio de esquema es una tarea laboriosa y propensa a errores. Con Claude Code, puedes manejar de una vez desde el diseno del cambio de esquema hasta la generacion de migraciones y la actualizacion de datos semilla.
Migraciones con Prisma
Desde el diseno del esquema hasta la ejecucion de migraciones
> Agrega las siguientes tablas al esquema de Prisma, genera y aplica la migracion.
>
> Tabla: Order
> - id: UUID, clave primaria
> - userId: clave foranea a User
> - items: OrderItem[] (uno a muchos)
> - totalAmount: Decimal
> - status: enum (pending, confirmed, shipped, delivered, cancelled)
> - createdAt, updatedAt
Ejemplo de esquema generado por 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)
}
Despues, Claude Code ejecuta automaticamente el comando de migracion.
npx prisma migrate dev --name add_order_tables
Migraciones con Drizzle
Tambien puedes dar instrucciones similares cuando usas Drizzle ORM.
> Agrega la tabla Order al esquema de Drizzle ORM.
> Genera tambien el archivo de migracion.
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),
}));
Modificacion de esquemas existentes
Tambien puede manejar de forma segura cambios en tablas existentes como agregar o renombrar columnas.
> Aplica los siguientes cambios a la tabla users.
> - Agregar columna phoneNumber (nullable)
> - Dividir name en firstName y lastName
> - Incluir la logica de migracion de datos existentes
Claude Code genera la migracion con el script de migracion de datos incluido.
-- Migracion: 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);
-- Migracion de datos existentes
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";
Generacion de datos semilla
Tambien puedes crear datos de prueba para desarrollo.
> Crea 20 registros de datos semilla para la tabla Order.
> Que los estados esten distribuidos uniformemente.
> Con datos ficticios realistas.
Verificacion de seguridad de las migraciones
> Verifica el historial actual de migraciones,
> y comprueba que no haya problemas antes de aplicar en produccion.
> Senala especialmente los cambios con riesgo de perdida de datos.
Para los patrones de integracion de BD en el desarrollo de APIs, consulta como acelerar el desarrollo de APIs. Ademas, escribir reglas relacionadas con la base de datos en CLAUDE.md mejora la seguridad. Para consejos sobre como escribirlo, consulta la guia completa de escritura de CLAUDE.md.
Resumen
Con Claude Code, puedes automatizar de forma consistente desde el diseno del esquema de BD hasta los cambios, la generacion de migraciones y la creacion de datos semilla. Es especialmente poderoso en migraciones complejas que incluyen logica de migracion de datos.
Para el uso detallado de Prisma, consulta la documentacion oficial de Prisma, y para las funcionalidades de Claude Code, consulta la documentacion oficial de Anthropic.
PDF gratuito: Hoja de trucos de Claude Code en 5 minutos
Solo deja tu correo y te enviaremos al instante la hoja de trucos en una página A4.
Cuidamos tus datos personales y nunca enviamos spam.
Sobre el autor
Masa
Ingeniero apasionado por Claude Code. Dirige claudecode-lab.com, un medio tecnológico en 10 idiomas con más de 2.000 páginas.
Artículos relacionados
7 comprobaciones antes de publicar cada día un artículo multilingüe sobre Claude Code
Una lista práctica para publicar artículos multilingües sobre Claude Code todos los días sin olvidar idiomas, romper CTAs ni dejar páginas antiguas en producción.
Que es Codex Automations y como dejar que la IA gestione contenido mientras duermes
Guia practica para usar Codex Automations en analitica, articulos, CTA, despliegue y monetizacion.
Claude Code × GCP Cloud Functions Guía Completa | Desarrollo Serverless Ultrarrápido
Optimiza GCP Cloud Functions con Claude Code. Implementa triggers HTTP/Pub/Sub/Firestore, pruebas locales y automatización de despliegues con ejemplos de código reales de la experiencia de Masa.