Sql server 在每个匹配的字符串值之前添加文件中的文本
我有一个包含697个存储过程的CREATE语句的SQL文件,但不幸的是,由于语法问题,它无法执行 脚本需要在每个Sql server 在每个匹配的字符串值之前添加文件中的文本,sql-server,powershell,text,replace,append,Sql Server,Powershell,Text,Replace,Append,我有一个包含697个存储过程的CREATE语句的SQL文件,但不幸的是,由于语法问题,它无法执行 脚本需要在每个CREATE过程调用之间使用GO语句 问题是:如何在每个创建过程语句之前添加GO 我希望通过使用PowerShell代码来实现这一点 Select字符串可能会指引我们正确的方向,因为它能够在SQL文件中找到697个存储过程。下面的数字是697。但不知道如何使用它在每个查找前添加文本 (Select-String -Path $sqlFile -Pattern "CREATE
CREATE过程
调用之间使用GO
语句
问题是:如何在每个创建过程
语句之前添加GO
我希望通过使用PowerShell代码来实现这一点
Select字符串
可能会指引我们正确的方向,因为它能够在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时遇到不正确的语法
谢谢您的帮助。找到了解决方案。使用
`n
字符
(Get-Content $sqlFile).replace('CREATE PROCEDURE', " GO `n CREATE PROCEDURE") | Set-Content $sqlFile
GO
*不是SQL语句!它是SQL Server Management Studio和SQL Server空间中的一些Microsoft库使用的分隔符,但它是特定于SQL Server的,并不是一个标准化的SQL元素,不过请注意,`n
不是一个字符;这是一个转义序列,在PowerShell中扩展为LF角色。一个稍慢但重复性较低的解决方案是:(获取内容$sqlFile)-替换“创建过程”,“GO`n`$&”|设置内容$sqlFile