drizzle-kit export

This guide assumes familiarity with:

drizzle-kit export는 Drizzle 스키마의 SQL 표현을 내보내고, 콘솔에 SQL DDL 표현을 출력할 수 있게 해줍니다.

내부 동작 원리

Drizzle Kit의 export 커맨드는 다음과 같은 순서로 동작합니다:

  1. Drizzle 스키마 파일을 읽고, 스키마의 JSON 스냅샷을 생성합니다.
  2. JSON 차이를 기반으로 SQL DDL 문을 생성합니다.
  3. 생성된 SQL DDL 문을 콘솔에 출력합니다.

이 기능은 Drizzle 마이그레이션을 관리하는 코드베이스 우선 접근 방식을 지원하기 위해 설계되었습니다. Drizzle 스키마의 SQL 표현을 내보내면, Atlas와 같은 외부 도구가 모든 마이그레이션을 처리할 수 있습니다.

drizzle-kit export 커맨드를 사용하려면 dialectschema 경로 옵션을 제공해야 합니다. 이 옵션은 drizzle.config.ts 설정 파일을 통해 설정하거나, CLI 옵션으로 직접 지정할 수 있습니다.

설정 파일 사용
CLI 옵션 사용
// drizzle.config.ts
import { defineConfig } from "drizzle-kit";

export default defineConfig({
  dialect: "postgresql",
  schema: "./src/schema.ts",
});
npx drizzle-kit export

스키마 파일 경로

여러분은 하나의 schema.ts 파일을 사용하거나, 프로젝트 전체에 걸쳐 원하는 만큼의 스키마 파일을 분산시킬 수 있습니다. Drizzle Kit은 이 파일들의 경로를 glob 형식으로 schema 설정 옵션을 통해 지정해야 합니다.

예제 1
예제 2
예제 3
예제 4
📦 <project root>
 ├ ...
 ├ 📂 drizzle
 ├ 📂 src
 │ ├ ...
 │ ├ 📜 index.ts
 │ └ 📜 schema.ts 
 ├ 📜 drizzle.config.ts
 └ 📜 package.json
import { defineConfig } from "drizzle-kit";

export default defineConfig({
  schema: "./src/schema.ts",
});

하나의 프로젝트에 여러 설정 파일 사용하기

여러분은 프로젝트 내에 여러 개의 설정 파일을 가질 수 있습니다. 이는 여러 데이터베이스 단계나 여러 데이터베이스, 또는 동일한 프로젝트 내에서 서로 다른 데이터베이스를 사용할 때 매우 유용합니다.

npx drizzle-kit export --config=drizzle-dev.config.ts
npx drizzle-kit export --config=drizzle-prod.config.ts
📦 <project root>
 ├ 📂 drizzle
 ├ 📂 src
 ├ 📜 .env
 ├ 📜 drizzle-dev.config.ts
 ├ 📜 drizzle-prod.config.ts
 ├ 📜 package.json
 └ 📜 tsconfig.json

위 예제에서 볼 수 있듯이, 프로젝트 구조 내에 drizzle-dev.config.tsdrizzle-prod.config.ts라는 두 개의 설정 파일이 있습니다. 각 파일은 개발 환경과 프로덕션 환경에 맞게 구성할 수 있습니다. 이를 통해 환경에 따라 다른 설정을 쉽게 적용할 수 있습니다.

확장 가능한 설정 목록

drizzle-kit export 명령어는 CLI 전용 옵션 목록을 제공합니다.

--sqlDrizzle 스키마의 SQL 표현 생성

기본적으로 Drizzle Kit은 SQL 파일을 출력하지만, 향후 다양한 형식을 지원할 예정입니다.

npm
yarn
pnpm
bun
npx drizzle-kit push --name=init
npx drizzle-kit push --name=seed_users --custom



drizzle-kit 설정은 drizzle.config.ts 파일을 통해 구성하는 것을 권장합니다. 하지만 CI/CD 파이프라인 등에서 필요한 경우 CLI를 통해 모든 설정 옵션을 제공할 수도 있습니다.

dialectrequired데이터베이스 방언,
---
dialects: ['postgresql', 'mysql', 'sqlite', 'turso', 'singlestore']
---

{frontmatter.dialects.map(dialect => <><code>{dialect}</code>&#32;</>)}

위 코드는 frontmatter.dialects 배열에 있는 각 데이터베이스 방언(dialect)을 순회하며 <code> 태그로 감싸고, 각 항목 뒤에 공백을 추가하는 코드입니다. 이렇게 하면 각 방언 이름이 코드 형식으로 표시되고, 항목 사이에 공백이 생깁니다.

중 하나 선택
schemarequired타입스크립트 스키마 파일 또는 여러 스키마 파일이 있는 폴더 경로
config설정 파일 경로, 기본값은 drizzle.config.ts

예제

./src/schema.ts에 위치한 Drizzle 스키마를 콘솔로 내보내는 방법을 보여주는 예제입니다.
Drizzle 설정 파일은 configs 폴더에 위치시킬 것입니다.

먼저 설정 파일을 만들어 보겠습니다.

📦 <project root>
 ├ 📂 configs
 │ └ 📜 drizzle.config.ts
 ├ 📂 src
 │ └ 📜 schema.ts
 └ …
drizzle.config.ts
import { defineConfig } from "drizzle-kit";

export default defineConfig({
  dialect: "postgresql",
  schema: "./src/schema.ts",
});
schema.ts
import { pgTable, serial, text } from 'drizzle-orm/pg-core'

export const users = pgTable('users', {
	id: serial('id').primaryKey(),
	email: text('email').notNull(),
	name: text('name')
});

이제 다음 명령어를 실행합니다.

npx drizzle-kit export --config=./configs/drizzle.config.ts

그러면 Drizzle 스키마의 SQL 표현이 성공적으로 출력됩니다.

CREATE TABLE "users" (
        "id" serial PRIMARY KEY NOT NULL,
        "email" text NOT NULL,
        "name" text
);