name: yml2ddl description: 从Starlake YAML定义生成SQL DDL语句
YML到DDL技能
从您的Starlake YAML表定义生成SQL DDL(数据定义语言)语句 — CREATE TABLE, ALTER TABLE等。通过定义在types/default.sl.yml中的类型映射支持多种目标数据库。
使用
starlake yml2ddl [options]
选项
--datawarehouse <value>: 目标数据仓库名称 — 必须匹配types/default.sl.yml中的DDL映射键(必需)。示例:bigquery,snowflake,postgres,redshift,synapse,duckdb--connection <value>: 具有读写访问权限的JDBC连接名称(用于--apply模式)--output <value>: 生成的DDL文件的输出目录(默认:./{datawarehouse}/)--catalog <value>: 数据库目录名称(如果适用)--domain <value>: 仅为此特定域生成DDL(默认:所有域)--schemas <value>: 域内要生成DDL的模式逗号分隔列表--apply: 直接将生成的DDL执行到数据库--parallelism <value>: 并行级别(默认:可用CPU核心)--reportFormat <value>: 报告输出格式:console,json, 或html
配置上下文
types/default.sl.yml中的类型映射
DDL生成使用ddlMapping将Starlake类型映射到数据库特定类型:
# metadata/types/default.sl.yml
types:
- name: "string"
primitiveType: "string"
ddlMapping:
bigquery: "STRING"
snowflake: "VARCHAR"
postgres: "TEXT"
duckdb: "VARCHAR"
synapse: "NVARCHAR(MAX)"
- name: "long"
primitiveType: "long"
ddlMapping:
bigquery: "INT64"
snowflake: "BIGINT"
postgres: "BIGINT"
duckdb: "BIGINT"
- name: "decimal"
primitiveType: "decimal"
ddlMapping:
bigquery: "NUMERIC"
snowflake: "NUMBER(38,9)"
postgres: "NUMERIC"
示例
为BigQuery生成DDL
starlake yml2ddl --datawarehouse bigquery
为Snowflake生成DDL(特定域)
starlake yml2ddl --datawarehouse snowflake --domain starbake
生成并应用DDL到PostgreSQL
starlake yml2ddl --datawarehouse postgres --connection my_pg_conn --apply
生成DDL到自定义输出目录
starlake yml2ddl --datawarehouse duckdb --output /tmp/ddl
为特定模式生成DDL
starlake yml2ddl --datawarehouse snowflake --domain sales --schemas orders,customers
并行DDL生成
starlake yml2ddl --datawarehouse bigquery --parallelism 4
相关技能
- extract-script - 从模板生成提取脚本
- xls2yml - 将Excel转换为YAML(在DDL生成之前)
- config - 配置参考(类型映射)