我有以下PowerShell脚本从表中查询单个列,我想将结果发送到文本文件:
$SqlStatement =
"SELECT Result
FROM JobRun
WHERE AccountID = 13
AND InterfaceID = 2
AND Started BETWEEN '4/1/2016' AND '4/2/2016'"
$Result = Invoke-Sqlcmd -ServerInstance "xxxx" -Database "Vincent" -Query $SqlStatement -Username "rminder" -Password "xxxx"
$Result | Out-File C:\Temp\MyProject\SUP_20160401.Txt -Width 4000
如果没有-Width参数,文本将被截断为大约255个字符。即使使用-Width参数,文本也会被截断为大约2155个字符。它看起来像这样:
EVV_AutoConfirmFlag|EVV_VisitRecordIndicator...
有没有办法可以避免任何截断?我打算多次运行此查询。 SQL Server表中的Result列是varchar(max)列,因此它可以容纳非常大量的数据。在上面的查询中,结果列包含~40K字节的文本。
顺便说一句,我也尝试了如下的Export-Csv,但是在文本的4K左右截断。
$Result | Export-Csv C:\Temp\MyProject\SUP_20160401.Csv -NoTypeInformation
正如@vonPryz所说,存在多个问题。这应该工作
$Result = Invoke-Sqlcmd -ServerInstance "xxxx" -Database "Vincent" -Query $SqlStatement -Username "rminder" -Password "xxxx" -MaxCharLength ([int]::MaxValue)
$Result | Export-Csv C:\Temp\MyProject\SUP_20160401.Csv -NoTypeInformation
使用MaxCharLength,您将获得超过4K的文本,并能够以CSV格式输出。