2010-08-03 59 views
2

我想使用C#解析文件.sql的SQL代碼。C#中的Sql解析器用於語法檢查Oracle語句

我想確定一個文件sql語法檢查,特別是插入,更新和刪除語句。

特別是有沒有免費的解析器可以解析C#.NET中的SQL代碼?更好的是免費軟件,包含源代碼,並且易於使用。

我使用Oracle

+0

您是否希望在*它傳遞給Oracle執行之前驗證SQL *? – Lazarus 2010-08-03 10:50:20

+0

我該怎麼做呢?無論如何,我的應用程序的requeriments是驗證SQL沒有執行。只有我需要用sql文件和「PARSER」。 – Kiquenet 2010-08-04 08:15:35

回答

2

您可以ANTLR嘗試。
grammar page你會發現幾種與Oracle有關的語法。

無關,有沒有辦法只是「準備」沒有執行語句?這樣你可以讓Oracle檢查語法,然後在代碼中捕獲最終的錯誤。這將幫助您跳過Oracle中已存在的重複功能。更不用說在不同版本的Oracle之間處理更改的問題了。

編輯:
有關代碼示例回覆評論:我用ANTLR簡單,我有很難互聯網上找到的代碼示例。我發現的主要來源是examples from ANTLR download page。現在我看到ANTLR的作者Terence Parr,published new book以及隨附源代碼包含更多ANTLR examples

由於您對ANTLR沒有多少經驗,我可能再次建議您嘗試另一種方法,因爲這是一個相當複雜的領域,需要相當大的學習努力才能開始。至少,那是我的經歷。

+0

thx,先生。禪達; .NEt中的任何示例應用程序 - 使用源代碼(如果可能) - 使用AntLR? – Kiquenet 2010-08-03 12:19:40

+0

@zendar語法頁面鏈接已過時。兩種可能的替代方法:http://www.antlr3.org/grammar/list.html或https://github.com/antlr/grammars-v4 – stephen 2015-03-09 15:58:26

0

General SQL Parser可以在不連接數據庫的情況下執行脫機SQL語法檢查。它支持Oracle,SQL Server,DB2,MySQL,MS-ACCESS,Teradata和PostGreSQL。

但它是一個商業SQL庫,而不是開源的。