
官网:https://sqlshift.cn/
SQLShift 作为一款多元异构数据库的 SQL 方言转换工具,在过去两个月,陆续支持了 Oracle 存储过程 ➝ OceanBase/PostgreSQL 的语法转换,本期让我们一起看看又有哪些新能力吧!
✔️ SQL Server 存储过程 ➝ GaussDB 函数重构:支持 T-SQL → PL/pgSQL 的智能转换,结构/语义全面适配。
✔️ 批量转换能力:支持一次性转换几十至上百个存储过程,自动识别语法风险!
SQLShift 本次升级最大的亮点,在于对 SQL Server 与 GaussDB 之间复杂语义差异的精准映射与语法重构。
对 SQL Server 存储过程引用的结构定义、系统视图、数据类型等语法元素评估其在 GaussDB 的兼容性,覆盖 300+ 语法点,实现异构数据库之间的语法精准映射,部分语法类型效果如下:
| 语法元素类别 | SQL Server 语法示例 | 转换为 GaussDB 语法 | 
|---|---|---|
| 结构定义 | 如 CREATE PROCEDURE... | 重写为 CREATE FUNCTION ... RETURNS type LANGUAGE plpgsql,以消除 GaussDB 对存储过程的使用限制。 | 
| 系统函数 | 如@@spid | 重写为 pg_backend_pid() | 
| 系统视图&表 | 如 sys.columns | 重写为 information_schema.columns | 
| 临时对象 | 如 SELECT ... INTO #temp_table | 重写为 CREATE TEMP TABLE ... AS | 
| 数据类型 | 如 DATETIME | 重写为 TIMESTAMP(3) | 
| 关键字 | 如 CREATE TABLE DemoTable(CONTENT BIT, DBTIMEZONE VARCHAR(50)... | 自动重命名 GaussDB 保留字(如 DBTIMEZONE),并针对非保留字(如 content)提供使用场景建议。 | 
更多语法等你来体验 ……
SQLShift 针对 SQL Server 特有的 非标准写法、平台行为差异 进行语义级修复,真正做到“能识别、更能重构”,节省大量人工迁移时间,部分典型问题及修复方案:
1. 表别名提前引用
UPDATE a SET col=1 FROM tableA a WHERE a.id=b.idUPDATE tableA a SET col=1 FROM tableB b WHERE a.id=b.id依据:GaussDB 要求 UPDATE 子句明确主表别名作用域
2. 无终止符语句
SELECT * FROM tableSELECT * FROM table;(自动补全;)更多 SQL Server 特有语法,等你来探索 ……
通用模型通常基于 PostgreSQL 语法泛化训练,无法有效识别 GaussDB 与 PG 的版本差异问题,导致高危误转换。例如 GaussDB V2.0-3.x 明确不支持 uuid_generate_v4() 等 PG 函数,且仅支持 ON COMMIT {PRESERVE ROWS | DELETE ROWS},但通用模型因缺乏版本知识库,仍套用 PG 语法规则。
SQLShift 深度感知 GaussDB 版本差异,深度集成华为官方语法规则,结合语义级识别与行为重构,动态解析目标集群的精确版本号,确保每一次转换都真正“可用、可控、可维护”:
NEWID() ➝ 业务唯一标识符重构(如Java UUID.randomUUID().toString()),规避不存在等价函数的风险。ON COMMIT DROP ➝ 显式清理链(ON COMMIT DELETE ROWS + DROP),确保生命周期合规,避免临时表堆积引发集群OOM。爱可生开源社区
,赞7
还在手动一个个存储过程转换?SQLShift 批量处理能力,轻松应对上百个存储过程迁移:
苦于存储过程转换的你,还等什么?
快来体验吧!