我正在尝试获取多个存储过程,每个存储过程都输出具有不同列名称的特定结果。
我已经设法让脚本解析每个查询,但它只是将所有结果集中到一个文件中。是否有办法让它在单独的文件中为每个查询生成输出(特别是通过 Export-CSV 出于格式原因)?
## DB Variables
$ServerName = "vLonMhDb2012-1"
$username = "sa"
$passwordfile = "\\vlonmhapp2012-1\APX$\auto\Scripts\APXSA_PasswordSecurestring.txt"
$SSPassword = cat $Passwordfile | convertto-securestring
$PSCredential = new-object -typename System.Management.Automation.PSCredential -argumentlist $username,$SSPassword
$DBPassword = $PSCredential.GetNetworkCredential().Password
$DataBase = "APXFirm"
$queries = @("set nocount on;EXEC [APXFirm].[APXUserCustom].[pReconPortfolioSFIM] @portfolios='@CUST_Recon_UBSLondon'",
"set nocount on;EXEC [APXFirm].[APXUserCustom].[pReconSecuritySFIM] @Portfolios='@CUST_Recon_UBSLondon'",
"set nocount on;EXEC [APXFirm].[APXUserCustom].[pReconAppraisalSFIM] @Portfolios='@CUST_Recon_UBSLondon', @DATE = '{yest}', @UseSettlementDate = 0, @AccruedInterestID = 3",
"set nocount on;EXEC [APXFirm].[APXUserCustom].[pReconCashSFIM] @Portfolios='@CUST_Recon_UBSLondon', @DATE = '{yest}', @UseSettlementDate = 0, @AccruedInterestID = 3",
"set nocount on;EXEC [APXFirm].[APXUserCustom].[pReconTransactionHistoryAOSEMEA_181] @IsFromDataLoad=1, @IsUseStoredAuditEventID=1, @PortfolioBaseCode='@CUST_Recon_UBSLondon', @UseSettleDate=0, @StartDate='{tdly}', @EndDate='{toda}'"
)
##------------------------------------------------------------------
## Run Stored Proc
##------------------------------------------------------------------
foreach ($query in $queries)
{Invoke-SqlCmd -ServerInstance $ServerName -QueryTimeout 0 -Database $DataBase -Credential $PSCredential -Query $query -Verbose *>> "C:\temp\$CurrentTime.txt"}
到目前为止,仅使用 -verbose *>> 我实际上得到了所有存储过程的结果,但当然它们被集中到一个文本文件中。
我已经尝试过
{Invoke-SqlCmd -ServerInstance $ServerName -QueryTimeout 0 -Database $DataBase -Credential $PSCredential -Query $query | Export-Csv ($Outputpath + $CurrentTime + ".csv")}
但我相信输出不会进入 foreach 循环中的管道,所以这是不行的。
任何想法都将受到欢迎。
最后将每个查询结果通过管道传输到一个变量,然后从该变量结果通过管道导出 csv 的目的是使用每个查询的输出创建一个 csv。
foreach ($query in $queries) {
$returnresults = Invoke-SqlCmd -ServerInstance $ServerName -QueryTimeout 0 -Database $DataBase -Credential $PSCredential -Query $query
$返回结果| Export-Csv ($Outputpath + $query.Substring(47,14) + "" + $CurrentDate + "" + $CurrentTime + ".csv")
}