반응형
주요 명령어
1. prisma db seed
용도:
- 데이터베이스에 초기 데이터(Seed)를 삽입하는 명령어.
- prisma/seed.ts 또는 prisma/seed.js 파일에 정의된 스크립트를 실행하여 데이터베이스에 데이터를 삽입합니다.
사용 시점:
- 개발 환경에서 기본 데이터를 설정할 때.
- 테스트 환경에서 데이터베이스를 초기화할 때.
- 프로덕션 환경에 필수적인 초기 데이터를 삽입할 때.
실행 결과:
- seed.ts에 정의된 스크립트가 실행되며, 데이터베이스에 초기 데이터가 삽입됩니다.
명령어 실행:
npx prisma db seed
2. prisma db seed 관련 설정
package.json 설정
- Prisma는 prisma 디렉토리의 seed.ts 또는 seed.js 파일을 실행합니다.
- package.json에 스크립트를 설정해야 합니다.
"prisma": {
"seed": "ts-node --transpile-only prisma/seed.ts"
}
- 설명:
- "ts-node"는 TypeScript로 작성된 seed.ts 파일을 실행하기 위해 사용.
- --transpile-only 옵션은 컴파일 속도를 향상.
Seed 파일 (prisma/seed.ts)
- Seed 데이터를 정의하는 스크립트.
- 예제:
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
async function main() {
// 유저 데이터 삽입
await prisma.user.createMany({
data: [
{ userId: 'john123', username: 'John', nickName: 'Johnny', password: 'pass123' },
{ userId: 'jane123', username: 'Jane', nickName: 'Janey', password: 'pass456' },
],
});
// SNS 데이터 삽입
await prisma.sns.createMany({
data: [
{ userId: 1, platform: 'Twitter', accountName: '@johnny123', url: 'https://twitter.com/johnny123' },
{ userId: 2, platform: 'Facebook', accountName: 'jane.official', url: 'https://facebook.com/jane.official' },
],
});
}
main()
.then(async () => {
await prisma.$disconnect();
})
.catch(async (e) => {
console.error(e);
await prisma.$disconnect();
process.exit(1);
});
3. prisma db push
용도:
- Prisma 모델 정의(schema.prisma)를 데이터베이스에 동기화.
- 데이터베이스 스키마를 업데이트하지만, 마이그레이션 기록은 생성하지 않습니다.
사용 시점:
- 빠른 개발 환경에서 모델을 데이터베이스에 반영할 때.
- 마이그레이션 기록이 필요 없는 간단한 데이터베이스 동기화 작업에 사용.
실행 결과:
- schema.prisma의 모델이 데이터베이스에 바로 반영.
- 테이블이 생성되거나 수정됩니다.
명령어 실행:
npx prisma db push
주의사항:
- 마이그레이션 기록(prisma/migrations)이 남지 않으므로, 팀 프로젝트나 프로덕션 환경에는 적합하지 않음.
db seed와 db push의 차이점
Feature prisma db seed prisma db push
주요 목적 | 데이터 삽입 | 데이터베이스 스키마 동기화 |
입력 | seed.ts 스크립트에서 데이터를 삽입 | schema.prisma 파일을 데이터베이스에 반영 |
실행 결과 | 데이터베이스에 초기 데이터 추가 | 테이블 생성, 수정 등 데이터베이스 구조 변경 |
마이그레이션 기록 | 없음 | 없음 |
사용 시점 | 초기 데이터 설정, 개발/테스트 환경 데이터 초기화 | 빠른 개발 중 데이터베이스 스키마 변경 |
전체 워크플로우 예시
- 프로젝트 초기화:
- npx prisma init
- 모델 정의 및 스키마 적용:
- npx prisma db push
- Seed 파일 작성:
- prisma/seed.ts에 초기 데이터 작성.
- Seed 실행:
- npx prisma db seed
결론
npx prisma db seed
- 데이터베이스에 초기 데이터를 삽입.
- prisma/seed.ts를 사용.
npx prisma db push
- 데이터베이스 스키마를 동기화.
- 마이그레이션 기록 없이 반영.
개발 환경에서는 db push와 db seed를 조합하여 빠르게 데이터베이스를 구성할 수 있다.
'back-end > NestJs' 카테고리의 다른 글
nest cli 명령어 모음 (generate 기능) (0) | 2025.01.10 |
---|---|
Prisma를 사용할 때 명령어 실행 순서 정리 (0) | 2025.01.08 |
Prisma에서 자주 사용하는 명령어들과 그 용도 (0) | 2025.01.08 |