transqlate:將任何SQL轉換為PostgreSQL方言

banq發表於2024-03-20


transqlate 使用 AST 將 SQL 語段從一種方言轉譯成另一種方言

  • 將 Oraclisms 翻譯為 PostgreSQL 方言
  • 處理識別符號大小寫
  • 保留空格、大小寫和註釋
  • 一流的錯誤報告
  • 解析指令碼或任何表示式
  • 具有語法突出顯示或 Go 慣用 API 的簡單 CLI
  • 遵循Simon Holywell guide進行美化

使用transqlate工具將任何 Oracle SQL 片段轉換為 PostgreSQL 方言。

$ transqlate
Type SQL snippet and terminate with ^D
SELECT SYSDATE FROM DUAL; -- my comment
^D
SELECT CURRENT_TIMESTAMP; -- my comment
$


這個最簡單的Go入口點就是oracle包:

package main

import (
    <font>"fmt"

    
"gitlab.com/dalibo/transqlate/oracle"
)

func main() {
    pgsql, err := oracle.Translate(
"file.sql", `SELECT SYSDATE FROM DUAL;`)
    if err != nil {
        panic(err.Error())
    }
    fmt.Println(pgsql)
    
// Output: SELECT LOCALTIMESTAMP;<i>
}


參考

  • Ora2Pg - 遷移到 PostgreSQL 的著名開源參考。
  • sqlparser-rs - Rust 的 TDOP SQL 解析器
  • sqlglot - Python 應用程式的 SQL 前端
  • pg_query_go - 在 Go 中使用 Postgres 解析器

相關文章