将参数传递给powershell中的sql文件(sqlcmd)

时间:2012-04-12 16:26:12

标签: sql variables powershell parameters sqlcmd

假设我正在尝试从powershell运行以下.sql文件

SELECT * FROM table

目前这就是我调用此文件的方式

Invoke-Sqlcmd -ServerInstance instance -Database database -Username username -Password password -InputFile basicQuery.sql

如果我想从“myTable”中选择,我该如何将该参数传递给sql文件?

1 个答案:

答案 0 :(得分:1)

如果查询与您的示例中的基本相同,则最好将-InputFile参数替换为-Query,您可以在其中轻松使用变量。 E.g。

$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