如何將SQL轉化成另一種query語言?

時間 2021-05-10 02:20:40

1樓:tkanng

可以試下Calcite。

LinkedIn: Pig Script ---> Samza streaming code

Bridging Offline and Nearline Computations with Apache Calcite

這篇文章描述了 LinkedIn 如何使用 Calcite ,將Pig script 轉換成 Calcite RelNode (邏輯執行計畫),最後轉成Samza streaming code的過程,如下圖

從文章來看,應該也是做了類似,Hive SQL ---> Calcite RelNode ---> Physical Plan 的事情。

另外,Calcite 也提供了從 Logical Plan unparse成 script的能力,可能有些幫助。

供你參考。

2樓:ImKAIne

antlr或者calcite

語法檔案可以參考spark sql或者presto的改簡單的可以自己學著寫

通過上面任意乙個開源包把sql解析成ast,然後再把ast轉換成你們公司的查詢語言

3樓:張浩斌

結構化查詢語言(Structured Query Language)最早是IBM的聖約瑟研究實驗室為其關聯式資料庫管理系統SYSTEM R開發的一種查詢語言,它的前身是SQUARE語言。SQL語言結構簡潔,功能強大,簡單易學,所以自從IBM公司2023年推出以來,SQL語言得到了廣泛的應用。如今無論是像Oracle、Sybase、DB2、Informix、SQL Server這些大型的資料庫管理系統,還是像Visual Foxpro、PowerBuilder這些PC上常用的資料庫開發系統,都支援SQL語言作為查詢語言。

一般來說,如果你希望做乙個DSL,然後功能跟SQL很接近,那你不如還是用SQL。

SQL經過這麼多年的實踐檢驗,已經相當成熟,又有廣泛的程式設計師基礎,肯定比自己重新發明乙個輪子,然後自己維護解析器/翻譯器,然後讓每個新員工都被迫學一門私有語言,要好的多啊。

上乙個這麼幹的大概是HQL ? 墳頭草都……,好吧可能還沒完全涼?

要是貴公司比IBM+Oracle+Sybase+MS還牛氣,當我沒說。

4樓:大寬寬

差不多就是某種查詢dsl

可以參考jpa那種查詢語言的做法。

但,相信我,這是乙個費力不討好的工作。其實也許你只要禁用一些sql的用法(比如不能join)。

現在的趨勢是不管底層是啥,上層查詢都盡可能sql化—hive,presto,tidb,…都是如此。

如何將知識轉化成能力?

G先生 讀書學習是實現自我成長 自我提公升非常重要的乙個方法,我們每個人都應該 都有必要多讀多學。但知識和能力不是一回事,需要注意的是,多讀多學是基礎 是前提,在讀和學的過程中還要多思考 多運用知識,這樣才能真的有所提公升。很多人都聽過 知識就是力量 這句話,但這句話的意思不是說知識是力量,而是使用...

如何將idea轉化成乙個流行的APP?

蛋炒飯資深研究員 作為乙個連續創業者,曾高峰期拿下2輪融資且成功退出把公司乾死的人來簡述一下這個正經問題。首先,你要區分的是你的想法是商業化還是做著玩 如果不是,接著看。商業化專案,以你的能力是做買賣,還是做生意,還是創業。做買賣一手交錢一手交貨,個體戶即可。做生意需要有一定的經營管理能力,可做到區...

如何將MBA學歷轉化成為面試的優勢?

見見世面 1 學歷只是敲門磚和准入線 2 如果某個崗位指定MBA,那麼來的都是,何談優勢3 mab學歷在評價中會是加分項,但並不是決定因素4 如果不要求學歷,MBA已經是優勢了 5 不要過於高看學歷的作用 馬惠彬 題主的邏輯有點混亂,看了半天才看懂。其實你是提了兩個問題 第乙個是讀了在職的MBA,怎...