对于以下脚本,它会创建一个包含查询返回的所有行的文件。但是,每一行都跟着换行符。它是一种在没有换行的情况下连接行的方法吗?
$sql = "select .... from ...."
$r = Invoke-Sqlcmd -ServerInstance xxx $sql
$name = "test.txt"
$r | % { $_[0] >> $name }
更新 一个可测试的例子:
$sql = "select 'a' C union all select 'b' union all select 'c' "
$r = Invoke-Sqlcmd -ServerInstance yoursever $sql
$name = "c:\temp\test.txt"
$r | % { $_[0] >> $name }
期待
ABC
而不是
a b c
答案 0 :(得分:1)
用流做,然后它也会很快!
$sql = "select 'a' C union all select 'b' union all select 'c' "
$r = Invoke-Sqlcmd -ServerInstance yoursever $sql
$name = "c:\temp\test.txt"
$stream = [System.IO.StreamWriter] "$name"
$r | % { $stream.Write($_[0]) } #Write() as opposed to WriteLine()
$stream.Close()
答案 1 :(得分:0)
数据行是多个对象,因此将它们保存为foreach会将每个值写入自己的行。在保存之前收集值并加入它们,例如:
($r | % { $_[0] }) -join '' >> $name