drizzle-kit pull
This guide assumes familiarity with:
- 开始使用 Drizzle 和
drizzle-kit
- 阅读这里
- Drizzle 模式基础 - 阅读这里
- 数据库连接基础 - 阅读这里
- Drizzle 迁移基础 - 阅读这里
- Drizzle Kit 概述 以及 配置文件 文档
drizzle-kit pull
允许你从现有数据库模式中提取(自省)数据,生成 schema.ts
drizzle 模式文件,
它设计用于支持 Drizzle 迁移的 数据库优先 方法。
当你运行 Drizzle Kit 的 pull
命令时,它会:
- 从现有数据库中提取数据库模式(DDL)
- 生成
schema.ts
drizzle 模式文件并将其保存在 out
文件夹中
这是一个很好的方法,适合需要在 TypeScript 项目之外管理数据库模式的情况,或者
您正在使用一个由其他人管理的数据库。
drizzle-kit pull
要求您指定 dialect
以及
数据库连接 url
或 user:password@host:port/db
参数,您可以通过
drizzle.config.ts 配置文件或通过 CLI 选项提供它们:
在一个项目中使用多个配置文件
您可以在项目中拥有多个配置文件,当您有多个数据库阶段、多个数据库或同一项目中的不同数据库时,这非常有用:
指定数据库驱动
IMPORTANT
Expo SQLite 和 OP SQLite 是设备内(每用户)数据库,无法从中 pull
数据库模式。
对于嵌入式数据库,Drizzle 提供 嵌入式迁移 - 请查看我们的 开始使用 指南。
Drizzle Kit 不自带预打包的数据库驱动,
它会根据当前项目中的 dialect
自动选择可用的数据库驱动 - 查看讨论。
大多数相同方言的驱动共享相同的连接参数集,
对于像 aws-data-api
、pglight
和 d1-http
这样的例外情况 - 您需要明确指定 driver
参数。
AWS Data API
PGLite
Cloudflare D1 HTTP
包含表、模式和扩展
drizzle-kit push
默认会管理 public
模式中的所有表。
您可以通过 tablesFilters
、schemaFilter
和 extensionFilters
选项配置表、模式和扩展的列表。
| |
---|
tablesFilter | 基于 glob 的表名过滤器,例如 ["users", "user_info"] 或 "user*" 。默认为 "*" |
schemaFilter | 模式名过滤器,例如 ["public", "drizzle"] 。默认为 ["public"] |
extensionsFilters | 已安装的数据库扩展列表,例如 ["postgis"] 。默认为 [] |
让我们配置 drizzle-kit 只操作 public 模式中的 所有表,
并告知 drizzle-kit 已安装了 postgis 扩展,
以使其可以忽略在公共模式中创建自己的表。
扩展的配置列表
我们建议通过 drizzle.config.ts 文件来配置 drizzle-kit
,
不过如果必要的话,您也可以通过 CLI 提供所有配置选项,例如在 CI/CD 管道中等。
| | |
---|
dialect | 必需 | 数据库方言, 选项之一 postgresql mysql sqlite turso |
driver | | 驱动程序例外 aws-data-api d1-http pglight |
out | | 迁移输出文件夹路径,默认是 ./drizzle |
url | | 数据库连接字符串 |
user | | 数据库用户 |
password | | 数据库密码 |
host | | 主机 |
port | | 端口 |
database | | 数据库名称 |
config | | 配置文件路径,默认是 drizzle.config.ts |
introspect-casing | | 列、表等中 JS 键创建的策略,preserve camel |
tablesFilter | | 表名过滤器 |
schemaFilter | | 模式名过滤器。默认为 ["public"] |
extensionsFilters | | 数据库扩展的内部数据库过滤器 |