在每个匹配的字符串值之前在文件中添加文本
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
我有这个 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