在每个匹配的字符串值之前在文件中添加文本

Add text in file before every matched string value

我有这个 SQL 文件,其中包含 697 个存储过程的 CREATE 语句,但不幸的是,由于语法问题,它无法执行。

脚本需要在每个 CREATE PROCEDURE 调用之间有一个 GO 语句。

问题是:如何在每个 CREATE PROCEDURE 语句之前添加 GO

我希望通过使用 PowerShell 代码来实现这一目标。

Select-String 可能会指引我们正确的方向,因为它能够在 SQL 文件中找到 697 个存储过程。下面返回的计数为 697。但不确定如何使用它在每个结果前添加文本。

(Select-String -Path $sqlFile -Pattern "CREATE PROCEDURE" -AllMatches).Matches.Count

我还尝试用以下命令替换文件中的文本

(Get-Content $sqlFile).replace('CREATE PROCEDURE', ' GO CREATE PROCEDURE') | Set-Content $sqlFile

然而,这在执行 SQL 脚本时导致错误:

A fatal scripting error occurred. Incorrect syntax was encountered while parsing GO

感谢您的帮助。

已找到解决方案。使用 `n 字符。

(Get-Content $sqlFile).replace('CREATE PROCEDURE', " GO `n CREATE PROCEDURE") | Set-Content $sqlFile