我需要从大型SQL文件中删除多余的GO语句,然后再将其通过Invoke-sqlcmd进行部署。 多个GO语句一起导致“输入脚本中没有批处理”,并使用-OutputSqlErrors $ false掩盖了所有其他错误。
Get-Unique删除所有重复的数据-这是不希望的。我只想删除重复的GO语句
当前脚本:
Exec (@SQLScript)
Print @SQLScript
End
GO
GO
if obj is not null
drop procedure
go
CREATE PROC
@al varchar(16),
@rule varchar(128)
END CATCH
GO
GO
If Exists (Select * From Table)
Go
Set @Start = DateAdd(m, 1, @Start)
End
GO
GO
我想要这样的脚本:
Exec (@SQLScript)
Print @SQLScript
End
GO
if obj is not null
drop procedure
go
CREATE PROC
@al varchar(16),
@rule varchar(128)
END CATCH
GO
If Exists (Select * From Table)
Go
Set @Start = DateAdd(m, 1, @Start)
End
GO
答案 0 :(得分:2)
如果将脚本加载到变量中,则可以使用正则表达式来匹配并替换多个“ GO”语句。例如:
$ReplacedText = $OriginalScript -replace '(GO(\n)*){2,}',"GO`n"
正则表达式匹配“ GO”,可能会或可能不会后跟换行两次或更多次。并用一个“ GO”替换它,然后换行。