【发布时间】:2021-03-19 04:00:26
【问题描述】:
我有这个 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 脚本时导致了错误:
发生了致命的脚本错误。解析 GO 时遇到语法错误
感谢您的帮助。
【问题讨论】:
-
GO*不是 SQL 语句!它是 SQL Server Management Studio 和 SQL Server 空间中的一些 Microsoft 库使用的 分隔符 - 但它是特定于 SQL Server 的,根本不是标准化的 SQL 元素
标签: sql-server powershell text replace append