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 要求你通过 schema 配置选项指定文件路径,可以使用 glob 来指定路径。

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",
});

一个项目中的多个配置文件

你可以在项目中使用多个配置文件,这在有多个数据库阶段或多个数据库,或同一项目中使用不同数据库时非常有用:

npm
yarn
pnpm
bun
npx drizzle-kit export --config=drizzle-dev.config.ts
npx drizzle-kit export --config=drizzle-prod.config.ts
📦 <项目根目录>
 ├ 📂 drizzle
 ├ 📂 src
 ├ 📜 .env
 ├ 📜 drizzle-dev.config.ts
 ├ 📜 drizzle-prod.config.ts
 ├ 📜 package.json
 └ 📜 tsconfig.json

可用配置项的扩展列表

drizzle-kit export 有一个仅限 CLI 的选项列表

--sql生成 Drizzle 架构的 SQL 表示

默认情况下,Drizzle Kit 输出 SQL 文件,但未来我们希望支持不同的格式

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



我们推荐通过 drizzle.config.ts 文件配置 drizzle-kit
但如果需要,也可以通过 CLI 提供所有配置选项,例如在 CI/CD 管道中等。

dialect必需数据库方言,可选值见 postgresql mysql sqlite turso singlestore
schema必需TypeScript 架构文件或包含多个架构文件的文件夹路径
config配置文件路径,默认是 drizzle.config.ts

示例

如何将 Drizzle 架构导出到控制台,Drizzle 架构位于 ./src/schema.ts

我们还将把 Drizzle 配置文件放在 configs 文件夹中。

让我们创建配置文件:

📦 <项目根目录>
 ├ 📂 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
);