首页 > 解决方案 > 在每个匹配的字符串值之前在文件中添加文本

问题描述

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

该脚本需要在每次调用GO之间添加一个语句。CREATE PROCEDURE

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

我希望通过使用 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 脚本时导致了错误:

发生致命的脚本错误。解析 GO 时遇到不正确的语法

感谢您的帮助。

标签: sql-serverpowershelltextreplaceappend

解决方案


找到了解决方案。使用`n角色。

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

推荐阅读