sql-server - 在每个匹配的字符串值之前在文件中添加文本
问题描述
我有这个 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 时遇到不正确的语法
感谢您的帮助。
解决方案
找到了解决方案。使用`n
角色。
(Get-Content $sqlFile).replace('CREATE PROCEDURE', " GO `n CREATE PROCEDURE") | Set-Content $sqlFile
推荐阅读
- python - 使用 Google Cloud DLP 存储的信息类型并获得 400 Invalid built-in info type name
- reactjs - 使用参数将路由器路由反应到错误的组件
- excel - 在 Excel 中显示重复的生日
- kotlin - 为什么显式缩小变量不会在 kotlin 中给出错误
- unity3d - 从照片中制作人物脸以实现统一
- python - 是否可以在单个列表推导中声明多个列表推导
- python - 无法在 vscode 中导入 tensorflow
- c++ - 无法获得问题的正确算法
- python - 循环遍历 pandas 数据帧并将行附加到其他数据帧,具体取决于 True/False
- java - 我在使用 JOptionPane 和 if/else 语句时遇到问题