Yazılım departmanımızın SQL scriptlerini belirli bir klasörden çalıştıran bir programı vardır. Şimdi bu işlevi PowerShell'de çoğaltmam gerekiyor.
C #:
var commands = Regex.Split(sqlFileText, @"^\s*GO\s*$", RegexOptions.IgnoreCase | RegexOptions.Multiline);
PowerShell'de aşağıdakileri denedim:
$regex = [regex]'(?im)^\s*GO\s*$'
$commands = $regex.Split($sqlfiletext)
Regex’ten anladığım kadarıyla, bu, SQL sorgusunu GO kelimesiyle ayrılmış komutlara bölmeli, ancak çıktısı $commands
tamamen aynı görünen tek bir dizedir.
Örnek metin:
SET ANSI_PADDING OFF
END
GO
USE [DB]
SET NOCOUNT ON
GO
IF NOT EXISTS(SELECT * FROM dbo.Table)
[[[stuff]]]
GO
IF EXISTS
EDIT: Tamam, bu açıkça benim yarattığım iş ile ilgili bir şey $regex
- eğer çalışırsa aşağıdaki şekilde yaratırsam, ancak büyük / küçük harf duyarsız seçeneği alamıyorum:
$regex = new-object System.Text.RegularExpressions.Regex ('^\s*GO\s*$', [System.Text.RegularExpressions.RegexOptions]::MultiLine)
-bor
ama sayıların bir şey olduğunu düşünmüştüm, sicimin bölünmesi değil. Ve New-Object komutuna iki RegEx seçeneği eklemenin bir yolunu bulamıyorum. Lütfen bunu başarmanın iki yolu olarak da aydınlatın.
[regex]'(?im)...
bit hakkında açıklıyor ama işe görünmüyor.
-bor
(Bitwise OR) operatörünü kullanmanın nesi yanlış ? TabiiIgnoreCase
belirtmedikçe davranışını alamazsın.