我正在尝试使用 .NET SQL 客户端库来解析其中包含 GO 语句的 sql 脚本。据我了解,GO 仅受 osql、sqlcmd 和 SSMS 支持,.NET SQL 客户端库不支持。我也不能使用 .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
我需要正则表达式给我一个包含 3 个字符串项的数组,如下所示(在正确识别 3 个 GO 语句并删除它们之后)
数组项 1
update tbl1
set col1 = "
GO right and then left
"
where col1 is null
/*
GO statement is not in TSQL
*/
数组项 2
select '
GO left and another left
'
数组项 3
insert into tbl2 (col1)
values ('
GO
')