任何人都可以幫我嗎?如何使用C#解析SQL文件?
我有一堆.sql文件。我想在服務器上執行這些文件之前解析(驗證)這些文件。
我有許多在線網站解析代碼。但我想用C#解析代碼。
所以,請你指導。如果有任何工具,我需要使用DLL。
我只是想分析該文件並沒有執行它
任何人都可以幫我嗎?如何使用C#解析SQL文件?
我有一堆.sql文件。我想在服務器上執行這些文件之前解析(驗證)這些文件。
我有許多在線網站解析代碼。但我想用C#解析代碼。
所以,請你指導。如果有任何工具,我需要使用DLL。
我只是想分析該文件並沒有執行它
一種方法是在服務器上執行它,除了SET PARSEONLY ON(以便它被解析但未執行):我認爲這是MS查詢分析器如何執行它。
Antler Parser Generator是你最好的選擇。對於您想要解析的SQL版本,可能存在預定義的語法。
快速谷歌扔了http://www.antlr.org/與plugin for ms sql或曾經有過一些所謂的Visual Studio數據庫專業人士的other sql dialects
Visual Studio中的一個。它後來被轉入Team Developer。
無論如何,他們通過在數據庫中執行並對結果進行測試來「編譯」sql代碼。我想如果這就是他們如何驗證它的工作,那麼這也許是你做得最好的方法。
你可以有方法可以得到查詢作爲輸入和
在SQL Server端,你可以有一個SET PARSEONLY ON語句,然後在「運行」中 查詢。該查詢實際上不會運行,但會報告任何錯誤。
如果你真的想這樣做,你應該問自己兩次(或者甚至三次:-))。
即使你找到一個解決方案,這似乎適用於你現在的文件,可能會有各種各樣的角落案件不會被覆蓋。有一個本地數據庫引擎解析它的建議是可行的,但在本地執行的操作和服務器上執行的操作之間仍然會有很多小的語法差異。
我的建議是讓服務器解析並驗證它 - 它基本上是真正確定的唯一方法。
DMS Software Reengineering Toolkit擁有SQL解析器,用於構建許多基於SQL的工具。
一個這樣的工具是一個Formatter格式器,它分析源文本並很好地格式化結果。如果格式化程序無法解析源代碼,則會生成非零進程狀態。
你可以簡單地「格式化」一個文件;如果格式化失敗,它不是合法的語法。
這些格式化程序是商業產品。
編輯2011年8月:DMS SQL解析器現在可以處理完整的SQL 2011標準語法。
你真的想完全解析SQL文件嗎? 或者只是驗證它是否是有效的SQL,執行時不會出錯? – BradC 2010-06-01 18:44:14
@BradC - 或者至少,執行時不會拋出* parse *錯誤; p – 2010-06-01 18:45:35
是否要驗證sql的語法? – Arseny 2010-06-01 18:46:15