2015-02-06 3 views
0

다음 스크립트의 경우 쿼리에서 반환 된 모든 행을 포함하는 파일을 만듭니다. 그러나 각 행은 줄 바꿈으로 이어집니다. 줄 바꿈없이 행을 조인하는 방법입니까?DataRows를 하나의 큰 텍스트 파일에 연결

$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

대신

01를 기대
 
a 
b 
c 
+0

'$ xml'이 무엇인지 전혀 알지 못합니다. 실제 샘플을 제공하십시오. –

+0

방금 ​​고쳤습니다. 그것은'$ r'이어야합니다. – ca9163d9

+0

PowerShell에서 리디렉터를 사용하지 마십시오. 그것은 옛날 방식입니다. ex를 사용하면 어떻게됩니까? '$ r | % {$ _ [0]} | 세트 내용 $ name'? –

답변

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() 
0

데이터row는 여러 개체이므로 foreach를 저장하면 각 값이 자체 줄에 기록됩니다. 저장하기 전에 값을 수집하고 다음과 같이 저장하십시오.

($r | % { $_[0] }) -join '' >> $name 
+0

이것은 작동합니다. 그러나 SQL 결과는 100MB 정도 될 수 있습니다. 배관으로 그것을 할 수있는 방법입니까? – ca9163d9

관련 문제