我正在尝试使用.NET SQL客户端库来解析其中包含GO语句的sql脚本。根据我的理解,GO仅受osql,sqlcmd和SSMS支持,并且.NET SQL客户端库不支持GO。我也不能使用.NET SMO。因此,我唯一剩下的选项是解析脚本并将其拆分为不带GO的SQL字符串组,并一次执行一个。我很感激帮助正确的方法与正则表达式这样做。特别是,我想解决以下问题。
假设我有一个SQL脚本,如下所示:
update tbl1
set col1 = "
GO right and then left
"
where col1 is null
/*
GO statement is not in TSQL
*/
GO
select '
GO left and another left
'
GO --break up the batch
insert into tbl2 (col1)
values ('
GO
')
GO
我需要Regex给我一个包含3个字符串项的数组,如下所示(正确识别3个GO语句并删除它们之后)
update tbl1
set col1 = "
GO right and then left
"
where col1 is null
/*
GO statement is not in TSQL
*/
select '
GO left and another left
'
insert into tbl2 (col1)
values ('
GO
')