Out-File截断文本

问题描述 投票:0回答:1

我有以下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
sql-server powershell
1个回答
1
投票

正如@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格式输出。

© www.soinside.com 2019 - 2024. All rights reserved.