我想解析一個包含像創建函數和存儲過程的命令的大型SQL腳本。每當我找到一個GO語句時(我想用普通的ado.net而不是SMO來執行它),我想在字符串中拆分文件。使用正則表達式刪除SQL腳本文件中的所有GO
問題是,到目前爲止我還沒有找到合適的正則表達式。使用一個簡單的忽略大小寫將會分裂它。同時也將拆分都去(S)在註釋裏像
- 這一點去也會被分割
使用這種表達^\bGO\b[^--]$
幾乎解決我的問題,但我得到了一些錯誤,當我有兩個連續的GOS (無論出於何種原因,存在於我的域名後面)。
end
go
GO
這是如何在我的腳本中創建SP的結尾。
我做它在C#
非常感謝
** 編輯 **
一位同事想出了一個解決方案,就目前來看,對全體我的劇本
^\s*go\s*\r\n
更多信息。一般來說,我會爲此設置一個「沙箱」單元測試;設置一個文字,其中包含您要做或不想刪除的GO模式,然後對這些模式應用「候選」正則表達式算法,並聲明所產生的文本是您想要的。考慮到你的特定正則表達式的測試通過或失敗應該是如何修改正則表達式的線索。如果您向我們提供了更多您希望移除或不希望移除的模式示例,它將幫助我們爲您提供幫助。 – KeithS 2012-02-23 17:34:42
@Andres有點偏題:是否**'^ \ bGO \ b [^ - ] $'**真的有用,還是有拼寫錯誤?我想你可能想要避免' - '_before_ GO,而不是之後。 – GolfWolf 2012-02-23 17:41:39
@KeithS很難舉一個例子,因爲這將被應用到所有創建SP,函數和視圖的數據庫源。但基本上它是一個可以非常多樣化的SQL文件源。我在註釋代碼/ * ... * /之間出現了一些問題,例如,以及在行註釋中的'go'動詞 - 這應該是... – Andres 2012-02-24 08:29:43