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 λͺ…λ Ήμ–΄λŠ” dialect 및 schema 경둜 μ˜΅μ…˜μ„ λͺ¨λ‘ μ œκ³΅ν•΄μ•Ό ν•˜λ©°, 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 files path

You can have a single schema.ts file or as many schema files as you want spread out across the project. Drizzle Kit requires you to specify path(s) to them as a glob via schema configuration option.

Example 1
Example 2
Example 3
Example 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",
});

Multiple configuration files in one project

You can have multiple config files in the project, it’s very useful when you have multiple database stages or multiple databases or different databases on the same project:

npm
yarn
pnpm
bun
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

Extended list of available configurations

drizzle-kit export has a list of cli-only options

--sqlgenerating SQL representation of Drizzle Schema

By default, Drizzle Kit outputs SQL files, but in the future, we want to support different formats

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



We recommend configuring drizzle-kit through drizzle.config.ts file, yet you can provide all configuration options through CLI if necessary, e.g. in CI/CD pipelines, etc.

dialectrequiredDatabase dialect, one of postgresql mysql sqlite turso singlestore
schemarequiredPath to typescript schema file(s) or folder(s) with multiple schema files
configConfiguration file path, default is drizzle.config.ts

Example

Example of how to export drizzle schema to console with Drizzle schema located in ./src/schema.ts

We will also place drizzle config file in the configs folder.

Let’s create config file:

πŸ“¦ <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')
});

Now let’s run

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

And it will successfully output SQL representation of drizzle schema

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