drizzle-kit export

本指南假定您已熟悉:

drizzle-kit export 可让你导出 Drizzle schema 的 SQL 表示,并在控制台中打印其 SQL DDL 表示。

底层是如何工作的?

Drizzle Kit 的 export 命令会触发一系列事件:

  1. 它会读取你的 Drizzle schema 文件,并构建一个 schema 的 JSON 快照
  2. 基于当前的 JSON 快照生成 SQL DDL 语句
  3. 将 SQL DDL 语句输出到控制台

它旨在支持管理 Drizzle migrations 的 codebase first 方法。 你可以导出 Drizzle schema 的 SQL 表示,让 Atlas 等外部工具为你处理所有迁移

drizzle-kit export 命令要求你同时提供 dialectschema 路径选项, 你可以通过 drizzle.config.ts 配置文件或 CLI 选项来设置它们

使用配置文件
作为 CLI 选项
// drizzle.config.ts
import { defineConfig } from "drizzle-kit";

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

Schema 文件路径

你可以只有一个 schema.ts 文件,也可以在项目中分散放置任意多个 schema 文件。 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
📦 <project root>
 ├ 📂 drizzle
 ├ 📂 src
 ├ 📜 .env
 ├ 📜 drizzle-dev.config.ts
 ├ 📜 drizzle-prod.config.ts
 ├ 📜 package.json
 └ 📜 tsconfig.json

可用配置的扩展列表

drizzle-kit export 有一组仅限 CLI 的选项

--sql生成 Drizzle Schema 的 SQL 表示

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

npm
yarn
pnpm
bun
npx drizzle-kit export --sql=true



我们建议通过 drizzle.config.ts 文件来配置 drizzle-kit, 但如果有必要,你也可以通过 CLI 提供所有配置选项,例如在 CI/CD 流水线中,等等。

dialectrequired数据库方言,取值为 postgresql mysql sqlite turso singlestore mssql cockroach 之一
schemarequiredTypeScript schema 文件或包含多个 schema 文件的文件夹路径
config配置文件路径,默认为 drizzle.config.ts

示例

以下示例展示如何将位于 ./src/schema.ts 的 Drizzle schema 导出到控制台

我们还会把 drizzle 配置文件放在 configs 文件夹中。

先创建配置文件:

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

export default defineConfig({
  dialect: "cockroach",
  schema: "./src/schema.ts",
});
schema.ts
import { cockroachTable, int4, string } from 'drizzle-orm/cockroach-core'

export const users = cockroachTable('users', {
	id: int4('id').primaryKey(),
	email: string('email').notNull(),
	name: string('name')
});

现在运行

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

它将成功输出 drizzle schema 的 SQL 表示

CREATE TABLE "users" (
        "id" int4 PRIMARY KEY,
        "email" string NOT NULL,
        "name" string
);