name: warehouse-table-sql-doris description: 根据现有业务表生成Doris数据仓库建表SQL代码,遵循严格的字段处理和注释规范 license: MIT compatibility: opencode metadata: audience: data engineers workflow: data warehouse development
本技能根据现有的业务数据库表结构,生成Apache Doris数据仓库的建表SQL代码。技能严格遵循以下原则:
create8-sql目录下IF NOT EXISTS控制在使用本技能前,请确保以下信息已明确:
create8-sql目录)tables目录下的.go文件,解析sqldef定义或GORM标签glob和read工具查找并读取业务表定义文件snake_case)VARCHAR → VARCHARINT → INTBIGINT → BIGINTDATETIME → DATETIMEDECIMAL → DECIMALTEXT → STRINGARRAY、MAP、BITMAP等ENGINE=OLAPDUPLICATE KEY或UNIQUE KEY或AGGREGATE KEYDISTRIBUTED BY HASH分桶PROPERTIES配置(如replication_num)created_at、updated_at)status)user_id、order_id)INDEX语法或BITMAP索引json
{
"table_name": "表英文名",
"description": "表中文描述",
"fields": [
{
"name": "字段名",
"length": "字段长度",
"type": "字段类型",
"description": "字段中文描述"
}
],
"create_sql": "完整的建表SQL语句"
}
create8-sql目录(如果不存在){表名}_doris_create.jsonwrite工具将JSON内容写入文件{表名}_doris_create.sqlecho "SQL" | doris-cli进行验证mysql --parse进行基本语法检查(注意Doris与MySQL的差异){
"table_name": "dw_user_info",
"description": "用户基本信息表,包含用户身份、联系方式和状态信息",
"fields": [
{
"name": "user_id",
"length": "",
"type": "BIGINT",
"description": "用户唯一标识符,系统自动生成的主键ID"
},
{
"name": "user_name",
"length": "100",
"type": "VARCHAR",
"description": "用户真实姓名,用于身份识别和显示"
},
{
"name": "email",
"length": "200",
"type": "VARCHAR",
"description": "用户电子邮箱地址,用于登录和接收通知"
}
],
"create_sql": "CREATE TABLE IF NOT EXISTS dw_user_info (\n user_id BIGINT COMMENT '用户唯一标识符,系统自动生成的主键ID',\n user_name VARCHAR(100) COMMENT '用户真实姓名,用于身份识别和显示',\n email VARCHAR(200) COMMENT '用户电子邮箱地址,用于登录和接收通知',\n phone VARCHAR(20) COMMENT '用户手机号码,用于登录验证和联系',\n status TINYINT COMMENT '用户状态:0-禁用,1-正常,2-锁定',\n created_at DATETIME COMMENT '用户注册时间,记录账户创建时间戳',\n updated_at DATETIME COMMENT '最后更新时间,记录用户信息修改时间'\n) ENGINE=OLAP\nDUPLICATE KEY(user_id)\nDISTRIBUTED BY HASH(user_id) BUCKETS 10\nPROPERTIES (\n \"replication_num\" = \"3\"\n);\nCOMMENT ON TABLE dw_user_info IS '用户基本信息表,包含用户身份、联系方式和状态信息';"
}
-- 数据仓库建表语句 (Apache Doris)
-- 表中文描述:用户基本信息表,包含用户身份、联系方式和状态信息
-- 源表:用户信息表 (user_info)
CREATE TABLE IF NOT EXISTS dw_user_info (
user_id BIGINT COMMENT '用户唯一标识符,系统自动生成的主键ID',
user_name VARCHAR(100) COMMENT '用户真实姓名,用于身份识别和显示',
email VARCHAR(200) COMMENT '用户电子邮箱地址,用于登录和接收通知',
phone VARCHAR(20) COMMENT '用户手机号码,用于登录验证和联系',
status TINYINT COMMENT '用户状态:0-禁用,1-正常,2-锁定',
created_at DATETIME COMMENT '用户注册时间,记录账户创建时间戳',
updated_at DATETIME COMMENT '最后更新时间,记录用户信息修改时间'
) ENGINE=OLAP
DUPLICATE KEY(user_id)
DISTRIBUTED BY HASH(user_id) BUCKETS 10
PROPERTIES (
"replication_num" = "3"
);
COMMENT ON TABLE dw_user_info IS '用户基本信息表,包含用户身份、联系方式和状态信息';
PROPERTIES)BITMAP、INVERTED)create8-sql目录存在,文件命名清晰glob:查找业务表定义文件read:读取文件内容grep:搜索特定模式write:保存生成的JSON和SQL文件bash:测试SQL语法question:询问用户字段含义和确认信息