В нашем отделе программного обеспечения есть программа, которая запускает сценарии SQL из определенной папки. Теперь мне нужно скопировать эту функциональность в PowerShell.
C #:
var commands = Regex.Split(sqlFileText, @"^\s*GO\s*$", RegexOptions.IgnoreCase | RegexOptions.Multiline);
Я пробовал следующее в PowerShell:
$regex = [regex]'(?im)^\s*GO\s*$'
$commands = $regex.Split($sqlfiletext)
Из того, что я понимаю в Regex, это должно быть разделение SQL-запроса на команды, разделенные словом GO, но вывод команды $commands
представляет собой одну строку, которая выглядит точно так же.
Пример текста:
SET ANSI_PADDING OFF
END
GO
USE [DB]
SET NOCOUNT ON
GO
IF NOT EXISTS(SELECT * FROM dbo.Table)
[[[stuff]]]
GO
IF EXISTS
РЕДАКТИРОВАТЬ: Хорошо, это явно связано с тем, как я создаю $regex
- если я создаю его со следующим, это работает, однако я не получаю опцию без учета регистра:
$regex = new-object System.Text.RegularExpressions.Regex ('^\s*GO\s*$', [System.Text.RegularExpressions.RegexOptions]::MultiLine)