Teradata 迁移至 Databricks ― 加速器

Table of Contents
Teradata → Databricks 迁移加速器
― 原厂服务渐行渐远时,如何把二十年的数仓资产稳妥地搬出来
本指南内容
- Teradata 退出中国后,现有用户面临的实际问题
- 迁移前的评估清单
- Teradata SQL 与 Spark SQL 的关键差异
- BTEQ、存储过程和加载工具的转换方式
- 数据迁移与并行运行策略
- 联系邮箱:Admin@innovationalofficesolution.com
一、背景:从“行业标杆”到“需要规划退路”
Teradata 自 1997 年进入中国市场,在电信、银行、航空和零售等行业建设了大量企业级数据仓库,也培养了一批国内最早的数仓人才。2023 年 2 月 15 日,Teradata 宣布将逐步结束在中国的直接运营,中国公司进入关闭程序。
对仍在运行 Teradata 的企业来说,系统不会因此立即停止,但以下问题会越来越突出:
- 原厂的本地技术支持、硬件维保和扩容渠道受限
- 一体机硬件老化,扩容成本高
- 熟悉 BTEQ、PI 设计和 Teradata 调优的人员逐渐流失
- 新的分析和 AI 需求很难在原有架构上实现
国内也出现了多种国产数据仓库替代方案;本指南面向的是选择开放湖仓架构、计划迁移到 Databricks 的团队。
二、迁移前评估清单
- 数据库、表、视图、宏、存储过程的数量与总数据量
- BTEQ 脚本数量,以及外层调度(Shell、Control-M、自研调度等)的依赖关系
- FastLoad / MultiLoad / TPump / TPT 作业清单
- 使用了哪些 Teradata 特有语法(QUALIFY、SAMPLE、PERIOD 类型、递归视图等)
- 下游 BI 工具和应用直连 Teradata 的连接清单
- 访问量最高的查询与资源消耗最高的作业(来自 DBQL 查询日志)
- 数据中是否包含个人信息或可能被认定为重要数据的内容
DBQL(数据库查询日志)是最有价值的评估依据:它能告诉你哪些表真正被使用、哪些查询最重要、哪些作业最耗资源。
三、Teradata SQL 与 Spark SQL 的关键差异
| Teradata | Databricks / Spark SQL | 说明 |
|---|---|---|
| SEL / INS / UPD / DEL 简写 | SELECT / INSERT / UPDATE / DELETE | 自动转换 |
| QUALIFY | QUALIFY(Databricks SQL 支持)/ 子查询 | 大部分可直接保留 |
| SAMPLE n | TABLESAMPLE / LIMIT | 语义略有不同 |
| TOP n | LIMIT n | |
| CASESPECIFIC / NOT CASESPECIFIC | 统一大小写处理 / 排序规则 | Teradata 默认常不区分大小写,需重点核对 |
| 日期运算(DATE + 1、ADD_MONTHS) | date_add / add_months | 整数与日期的隐式转换需显式化 |
| FORMAT 'YYYY-MM-DD' | date_format / to_date | |
| VOLATILE TABLE | 临时视图 / 临时表 | |
| SET 表(自动去重) | 显式去重(dropDuplicates / MERGE) | 容易遗漏,导致重复数据 |
| PRIMARY INDEX(PI) | 液态聚簇(Liquid Clustering)/ 分区 | 物理设计需要重新考虑 |
| 宏(MACRO) | 参数化 SQL / SQL 函数 | |
| 存储过程(SPL) | Databricks SQL 脚本 / PySpark | 游标与异常处理需改写 |
| 递归视图(WITH RECURSIVE) | 递归 CTE |
其中 SET 表和大小写比较是最常见的“结果不一致”来源:Teradata 的 SET 表会自动拒绝完全重复的行,迁移后如果不显式去重,数据量会悄悄变多。
四、迁移步骤
第一步|评估与分批
基于 DBQL 日志、数据字典和调度依赖,按业务主题域划分迁移批次,优先迁移依赖少、价值高的主题。
第二步|结构转换
DDL 自动转换为 Delta 表定义:数据类型映射(如 BYTEINT → TINYINT、NUMBER → DECIMAL)、PI 转为液态聚簇键、PPI 分区按需保留为分区或聚簇。
第三步|代码转换
- BTEQ 脚本 → Databricks SQL 脚本或 Notebook;.IF ERRORCODE 等控制命令转为作业任务的失败处理
- 存储过程与宏 → Databricks SQL / PySpark
- FastLoad / MultiLoad / TPT → COPY INTO、Auto Loader 或 Delta MERGE
初始自动转换准确率为 70%~90%。
第四步|历史数据迁移与增量同步
大表按分区并行导出为 Parquet 等文件,上传后加载为 Delta 表;切换前通过增量批次保持同步。数据量较大时,导出带宽和时间窗口往往是整个项目的关键路径,需要提前规划。
第五步|并行运行与对账(PulseQA)
新旧环境使用相同的源数据并行运行,比对目标表行数、合计值、主键差异,以及报表层关键指标。差异全部解释并经业务确认后切换。
五、中国区部署要点
- 区域选择:Azure Databricks 在中国由世纪互联运营,提供 chinaeast2、chinaeast3、chinanorth2、chinanorth3 等区域。根据 Azure 中国文档,无服务器计算等部分功能仅在个别区域提供,方案设计应以目标区域的功能清单为准。
- 数据出境:电信、金融、航空等行业的部分企业属于关键信息基础设施运营者。根据《促进和规范数据跨境流动规定》,此类企业向境外提供个人信息或重要数据需申报安全评估。数仓迁移应优先选择境内区域,避免因架构选择产生不必要的出境行为。
- 字符集:Teradata 中常见 LATIN 与 UNICODE 字符集混用,中文数据有时以 GBK 字节存放在 LATIN 列中。导出前需确认每列的实际编码,统一转换为 UTF-8。
六、应用示例:Emulus Consulting
Emulus Consulting 使用本加速器对 45 TB 数据、320 个 BTEQ 脚本和 110 个存储过程进行了评估与迁移。
- 迁移周期:12 周
- 夜间批处理:8 小时 → 42 分钟
- 硬件与维保成本降低 55%
- 对账差异全部关闭并经业务确认
先迁移 5 个脚本,看看结果
提交 5 个 BTEQ 脚本或存储过程,我们免费提供转换代码与对账报告。
- 免费 POC:免费 POC(Pulse Convert)
- 官网:innovationalofficesolution.com
- 邮箱:Admin@innovationalofficesolution.com
将 Teradata 传统数仓资产平稳迁移至 Databricks
原厂直接运营调整后的安全归宿。把 BTEQ 脚本、存储过程、宏与 TPT 加载作业转换为 Delta Lake 湖仓与 Lakeflow Jobs。初始自动转换准确率 70%~90%。