SQLShift 作為一款多元異構數據庫的 SQL 方言轉換工具,在過去兩個月,陸續支持了 Oracle 存儲過程 ➝ OceanBase/PostgreSQL 的語法轉換,本期讓我們一起看看又有哪些新能力吧!
https://www.bilibili.com/video/BV1253jzTE8t/?aid=114792748552...
新特性速覽
✔️ SQL Server 存儲過程 ➝ GaussDB 函數重構:支持 T-SQL → PL/pgSQL 的智能轉換,結構/語義全面適配。
✔️ 批量轉換能力:支持一次性轉換幾十至上百個存儲過程,自動識別語法風險!
一、SQL Server 存儲過程 ➝ GaussDB 的智能轉換
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 特有的非標準寫法、平台行為差異進行語義級修復,真正做到“能識別、更能重構”,節省大量人工遷移時間,部分典型問題及修復方案:
-
表別名提前引用
- SQL Server 語法:
UPDATE a SET col=1 FROM tableA a WHERE a.id=b.id - GaussDB 語法:
UPDATE tableA a SET col=1 FROM tableB b WHERE a.id=b.id
依據:GaussDB 要求 UPDATE 子句明確主表別名作用域
- SQL Server 語法:
-
無終止符語句
- SQL Server 語法:
SELECT * FROM table - GaussDB 語法:
SELECT * FROM table;(自動補全;)
- SQL Server 語法:
更多 SQL Server 特有語法,等你來探索...
🔍 精於 GaussDB 特性映射與語義重構
通用模型通常基於 PostgreSQL 語法泛化訓練,無法有效識別 GaussDB 與 PG 的版本差異問題,導致高危誤轉換。例如 GaussDB V2.0-3.x 明確不支持 uuid_generate_v4() 等 PG 函數,且僅支持 ON COMMIT {PRESERVE ROWS | DELETE ROWS},但通用模型因缺乏版本知識庫,仍套用 PG 語法規則。
SQLShift 深度感知 GaussDB 版本差異,深度集成華為官方語法規則,結合語義級識別與行為重構,動態解析目標集羣的精確版本號,確保每一次轉換都真正“可用、可控、可維護”:
- 業務邏輯重構:
NEWID()➝ 業務唯一標識符重構(如JavaUUID.randomUUID().toString()),規避不存在等價函數的風險。 - 臨時錶行為重構:
ON COMMIT DROP➝ 顯式清理鏈(ON COMMIT DELETE ROWS + DROP),確保生命週期合規,避免臨時表堆積引發集羣OOM。
二、存儲過程批量轉換,效率翻倍
還在手動一個個存儲過程轉換?SQLShift 批量處理能力,輕鬆應對上百個存儲過程遷移:
- ✅ 上傳腳本:支持 SQL 文件中包含多個存儲過程
- ✅ 智能拆解:精準識別每個存儲過程邊界,自動分配轉換任務
- ✅ 進度追蹤:轉換狀態實時可視,異常智能提示
- ✅ 語法兼容性評估:識別語法的兼容性,並自動重構
- ✅ 統一轉換導出:導出目標數據庫兼容的存儲過程文件
版本預告
- 📌 超 400 行復雜存儲過程支持
- 📌 SQL Server ➝ OceanBase 存儲過程轉換
苦於存儲過程轉換的你,還等什麼?快來體驗吧!
立即體驗 SQLShift 智能化遷移帶來的飛躍效率!限時專享額度兑換方式
🧩 SQL 方言再多,轉換也能一步到位,SQLShift 為你搞定!