名称: 提取模式 描述: 将数据库模式提取到Starlake YAML配置文件
提取模式技能
连接到JDBC数据库并提取表模式(列名、类型、约束)到Starlake YAML配置文件。这是在将现有数据库反向工程到Starlake项目中的第一步。
使用
starlake extract-schema [选项]
选项
--config <值>: 提取配置名称(引用metadata/extract/中的文件)--outputDir <值>: 输出生成的YML文件的目录--tables <值>: 要提取的特定数据库表--connectionRef <值>: 在application.sl.yml中定义的JDBC连接引用--all: 提取所有模式和表到外部文件夹--external: 在metadata/external/文件夹中输出YML文件--parallelism <值>: 提取的并行级别(默认:可用CPU核心)--snakecase: 应用snake_case转换到列名--reportFormat <值>: 报告输出格式:console、json或html
配置上下文
提取配置文件 (metadata/extract/{名称}.sl.yml)
# metadata/extract/externals.sl.yml
版本: 1
提取:
连接引用: "duckdb"
jdbc模式:
- 模式: "starbake"
表:
- 名称: "*" # 提取所有表
表类型:
- "TABLE" # TABLE, VIEW, SYSTEM TABLE, GLOBAL TEMPORARY
连接配置
连接必须在application.sl.yml中定义:
# metadata/application.sl.yml
版本: 1
应用:
连接:
duckdb:
类型: "jdbc"
选项:
网址: "jdbc:duckdb:{{SL_ROOT}}/datasets/duckdb.db"
驱动: "org.duckdb.DuckDBDriver"
source_postgres:
类型: jdbc
选项:
网址: "jdbc:postgresql://{{PG_HOST}}:5432/{{PG_DB}}"
驱动: "org.postgresql.Driver"
用户: "{{DATABASE_USER}}"
密码: "{{DATABASE_PASSWORD}}"
生成输出
命令生成表YAML文件,如:
# 生成: metadata/load/starbake/orders.sl.yml
版本: 1
表:
名称: "orders"
模式: "orders_.*.json"
属性:
- 名称: "order_id"
类型: "long"
必需: true
- 名称: "customer_id"
类型: "long"
- 名称: "status"
类型: "string"
- 名称: "timestamp"
类型: "timestamp"
示例
从配置中提取所有模式
starlake extract-schema --config externals --outputDir metadata/load
使用连接引用提取
starlake extract-schema --connectionRef source_postgres --outputDir metadata/load
提取特定表
starlake extract-schema --config externals --tables starbake.orders,starbake.customers
提取所有到外部文件夹
starlake extract-schema --config externals --all --external
提取时使用蛇形命名
starlake extract-schema --config externals --outputDir metadata/load --snakecase
并行提取
starlake extract-schema --config externals --outputDir metadata/load --parallelism 8
相关技能
- extract - 提取模式和数据
- extract-data - 从表中提取数据
- infer-schema - 从数据文件推断模式
- config - 配置引用(连接、类型)