[DB][Prisma] Prisma에서 데이터 시딩하기

2024. 8. 24. 21:47·Backend/DB

Prisma를 이용해 데이터 시딩(DB에 초기 record 들을 삽입하는 것)을 할 때는

API를 만들때와 마찬가지로 PrismaClient 라이브러리를 사용합니다.

 

우선 시딩을 위해서는 두 가지 JS 코드가 필요하며,

코드파일은 schema.prisma 코드와 같은 경로(=터미널로 실행시킬 수 있는 경로)에 있어야 합니다.

 

- 시딩할 데이터를 기록한 mock 파일 (mock.js)

- 데이터 시딩을 실행할 시딩 파일 (seed.js)

 

mock.js와 seed.js는 schema.prisma와 같은 경로에 있습니다

 

seed.js의 코드는 다음과 같습니다.

PrismaClient.user.deleteMany( ) 를 사용해 기존에 있던 데이터들을 초기화하고,

PrismaClient.user.createMany( ) 를 사용해 mock.js에 기록된 새로운 데이터들을 추가합니다.

두 함수 모두 Promise를 반환하기 때문에, await 구문을 추가합니다.

import { PrismaClient } from '@prisma/client';
import { USERS } from './mock.js';

const prisma = new PrismaClient();

async function main() {
  await prisma.user.deleteMany(); // delete existing data

  await prisma.user.createMany({ // seed mock data
    data: USERS,
    skipDuplicates: true, // skip if there are the duplicates on the @unique field
  });
}

main()
  .then(async () => {
    await prisma.$disconnect();
  })
  .catch(async (e) => {
    console.error(e);
    await prisma.$disconnect();
    process.exit(1);
  });

데이터  시딩을 터미널로 실행시키기 위해 package.json에 명령어를 추가합니다.

{
    "dependencies": {
      "@prisma/client": "^5.4.2",
      "dotenv": "^16.3.1",
      "express": "^4.18.2",
      "is-email": "^1.0.2",
      "is-uuid": "^1.0.2",
      "prisma": "^5.4.2",
      "superstruct": "^1.0.3"
    },
    "devDependencies": {
      "nodemon": "^3.0.1"
    },
    "type": "module",
    "scripts": {
      "dev": "nodemon app.js",
      "start": "node app.js"
    },
    // $ prisma seed 명령어로 seed.js를 실행할 수 있게 합니다.
    "prisma": {
      "seed": "node prisma/seed.js"
    }
    // * * * * * *
  }

이후 터미널에 아래 명령어를 실행시키면 데이터 시딩이 정상적으로 수행되는 것을 확인할 수 있습니다.

npx prisma db seed

728x90

'Backend > DB' 카테고리의 다른 글

[DB][Prisma] foreign key를 이용해 일대다/일대일/다대다 관계 정의하기  (0) 2024.08.26
[DB][Prisma] PrismaClient 함수 정리  (0) 2024.08.25
[DB][Prisma][Express] Prisma에서 Express를 사용해서 DB CRUD API 만들기  (0) 2024.08.24
[DB][Prisma] Prisma studio 사용하기  (0) 2024.08.24
[DB][Prisma] Can't reach database server at 'localhost:5432' 오류  (0) 2024.08.23
'Backend/DB' 카테고리의 다른 글
  • [DB][Prisma] foreign key를 이용해 일대다/일대일/다대다 관계 정의하기
  • [DB][Prisma] PrismaClient 함수 정리
  • [DB][Prisma][Express] Prisma에서 Express를 사용해서 DB CRUD API 만들기
  • [DB][Prisma] Prisma studio 사용하기
Rayi
Rayi
  • Rayi
    아카이브
    Rayi
  • 전체
    오늘
    어제
    • 분류 전체보기 (276)
      • CS (40)
        • CV (2)
        • PS (34)
      • Reveiw (18)
        • Paper (18)
        • Github (0)
      • ML (8)
        • Pytorch (5)
      • Language (59)
        • Python (8)
        • JavaScript (32)
        • TypeScript (16)
        • C++ (3)
      • IDE (12)
      • Git (13)
      • Frontend (77)
        • React (8)
        • ReactNative (6)
        • SolidJS (20)
        • CSS (12)
      • Backend (44)
        • DB (18)
        • Node.js (11)
      • UI (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    python
    ReactNative
    nodejs
    CV
    postgresql
    vscode
    Express
    GAN
    CSS
    PyTorch
    js
    PRISMA
    API
    modal
    frontend
    backend
    ps
    ts
    Three
    mongo
    react
    SOLID
    Git
    CS
    expo
    review
    ML
    deploy
    DB
    figma
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
Rayi
[DB][Prisma] Prisma에서 데이터 시딩하기
상단으로

티스토리툴바