将DataRows连接成一个大文本文件

时间:2015-02-06 21:47:20

标签: powershell

对于以下脚本,它会创建一个包含查询返回的所有行的文件。但是,每一行都跟着换行符。它是一种在没有换行的情况下连接行的方法吗?

$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

2 个答案:

答案 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