我正在尝试解析一个包含创建函数和存储过程等命令的大型SQL脚本。我想在找到GO
语句时将文件拆分为字符串(我想使用普通的ado.net而不是SMO来执行它)。
问题是到目前为止我还没有找到合适的正则表达式。使用简单的\bGO\b
忽略大小写会将其拆分。但是也会将评论中的所有内容分开,如
/*****************************\
sql statement 1
GO
sql statement 2
GO
\****************************/
我的要求是:即使脚本包含GO语句,如果脚本处于注释状态,也不要拆分脚本。假设我的整个脚本如下:
sql statement 1
GO
/*****************************\
sql statement 2
GO
sql statement 3
GO
\****************************/
sql statement 4
预期输出应该像
First command :
sql statement 1
Second command :
/*****************************\
sql statement 2
GO
sql statement 3
GO
\****************************/
sql statement 4
对此有任何想法吗?
提前致谢。 :)
答案 0 :(得分:0)
您可以删除所有评论,然后按GO
分割:
/\/\**\\[^\\]*?\\\**\// # match the comment
\/\**\\ # matches /*****\
[^\\]*? # any text within the comments
\\\**\/ # matches \*****/
删除上面的查找并按GO
拆分结果。