2012-04-12 64 views
0

让说,我想从运行PowerShell的以下.sql文件将参数传递给一个SQL文件中的PowerShell(SQLCMD)

SELECT * FROM table 

目前,这是我特意打电话这个文件

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

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

回答

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