SQL to Shell Script Converter
快速开始
方式一:使用 Python 脚本(推荐)
# 基本用法
python3 scripts/sql2sh.py input.sql output.sh "脚本描述"
# 从 Markdown 转换
python3 scripts/sql2sh.py input.md output.sh "台球周报-营收分析"
方式二:手动转换流程
- 读取 SQL 源文件
- 提取所有 SQL 代码块
- 识别目标表名和日期粒度
- 按模板生成脚本
转换规则
日期参数化
| 粒度 | 变量名 | 默认值 | 识别关键词 |
|---|---|---|---|
| 周 | WEEK_START |
$(date -d "last monday" +%Y-%m-%d) |
week, weekly |
| 日 | YYYY_MM_DD |
$(date +%Y-%m-%d) |
daily, day |
| 月 | MONTH_START |
$(date +%Y-%m-01) |
month, monthly |
SQL 块分组
- 环境准备:
SET,DELETE FROM,DROP TABLE IF EXISTS tmp_* - 建表:
CREATE TABLE - 核心处理:
INSERT INTO,SELECT - 清理:
DROP TABLE IF EXISTS tmp_*
输出格式
#!/bin/bash
##################################
### 脚本名:<table_name>.sh
### 作用:<description>
##################################
source /opt/common.sh
if [ $# -lt 1 ]; then
WEEK_START=$(date -d "last monday" +%Y-%m-%d)
else
WEEK_START=$1
fi
echo "WEEK_START: ${WEEK_START}"
sql1="<SQL语句>"
echo "执行SQL1: 描述"; start_time=$(date +%s); ExecuteDoris "${sql1}"; echo "耗时 $(($(date +%s) - start_time)) 秒"
echo "######## <table_name> 完成 ########"
资源文件
| 文件 | 用途 |
|---|---|
scripts/sql2sh.py |
核心转换脚本 |
references/template.md |
模板规范文档 |
assets/script_template.sh |
标准脚本模板 |
最佳实践
- 每个 SQL 块添加执行日志和耗时统计
- 临时表使用
tmp_前缀,脚本末尾清理 - 大查询分批执行避免内存溢出
- 使用
COALESCE处理 NULL 值