【问题标题】:passing a parameter to an sql file in powershell (sqlcmd)将参数传递给powershell中的sql文件(sqlcmd)
【发布时间】:2012-04-12 16:26:11
【问题描述】:
假设我正在尝试从 powershell 运行以下 .sql 文件
SELECT * FROM table
目前这是我调用这个文件的方式
Invoke-Sqlcmd -ServerInstance instance -Database database -Username username -Password password -InputFile basicQuery.sql
如果我想从“myTable”中进行选择,我将如何将该参数传递给 sql 文件?
【问题讨论】:
标签:
sql
variables
powershell
parameters
sqlcmd
【解决方案1】:
如果查询与您的示例一样基本,最好将-InputFile 参数替换为-Query,您可以在其中轻松使用变量。例如
$tables = "MyTable1","MyTable2"
$tables | Foreach-Object {
Invoke-Sqlcmd -ServerInstance instance -Database database -Username username -Password password -Query "SELECT * FROM $_"
}
对于更高级的查询,您可以进行文件搜索替换:
Get-Content sqlTemplate.sql | Foreach-Object {
$_ -replace "TABLE", "MyTable" | Out-File myQuery.sql -Append
}
Invoke-Sqlcmd -ServerInstance instance -Database database -Username username -Password password -InputFile myQuery.sql