2017-02-07 1 views
3

일부 SQL 작업을 자동화하는 Powershell 스크립트를 배우고 있습니다. DataAdapter를 사용하여 데이터 집합을 채우면 콘솔에서 14 개의 열이 선택되었다는 올바른 번호를 얻었습니다. 그러나, 나는 데이터 집합에서 테이블의 특정 열을 인쇄하는 루프를 사용하여 붙어있다.데이터 세트에서 특정 테이블 열을 가져 오는 방법은 무엇입니까?

업데이트 : TheMadTechnician 내 문제를 해결

1) - SQL 쿼리의 실수.
2) 여기에서 수정 된 코드를 업데이트했습니다. 또한 다른 사람들이 더 나은 형식의 테이블을 인쇄 할 수 있도록 Method3을 추가했습니다.

내 코드 :

# $ConnectionString is the server and my account info. 
$SqlQuery = $("SELECT * FROM MyTable") 

$Connection = New-Object System.Data.SQLClient.SQLConnection($ConnectionString) 
$SqlCommand = New-Object System.Data.SQLClient.SQLCommand($SqlQuery, $Connection) 
$Connection.Open() 

$DataAdapter = New-Object System.Data.SqlClient.SqlDataAdapter 
$DataAdapter.SelectCommand = $SqlCommand 
$Dataset = New-Object System.Data.Dataset 
$DataAdapter.Fill($Dataset) 

$Connection.Close() 

# Method1: 
foreach ($Row in $Dataset.Tables[0].Rows) {  
    Write-Host "col_1:$($Row.Id) col_2:$($Row.CreatedDateTime) col_3:$($Row.DeactivatedDateTime)" 
} 

# Method2: 
foreach ($Row in $Dataset.Tables[0].Rows) { 
    Write-Host "col_1:$($Row[0]) col_2:$($Row[1]) col_3:$($Row[2])" 
} 

# Method3: 
for ($i = 0; $i -lt $Dataset.Tables.Count; $i++) { 
    $Dataset.Tables[$i] | format-table | out-host 
} 
+0

DA 채우기 코드를 게시 할 수 있습니까? 나는 당신이 DA를 한 번 채우고 3 개의 메소드를 동일한 $ Dataset –

+0

에서 실행한다고 가정하고, 만약 당신이 단지'invoke-sqlcmd' PowerShell cmdlet을 사용하지 않고 왜 PowerShell 객체를 돌려 주어야하는지에 대한 데이터를 출력하려고한다면. 함께 일하는 것이 훨씬 쉽습니다. 예를 들어'$ data = invoke-sqlcmd -serverinstance 'server \ instance'-database 'db'-query '내 select 또는 exec 문'; $ data | select-object -property columnname, columnname2 다른 데이터 접근법은 $ data.ColumnName' 일 수 있습니다. 또한 '$ data' 객체를 루프에 넣고 같은 방식으로 레코드별로 레코드에 액세스 할 수 있습니다. 솔루션에 대한 관심이 있다면 전체 예제로 답변을 게시 할 것입니다. – jkdba

+0

@JoeC, 코드가 게시됩니다. –

답변

0
SELECT * FROM MyTable에 조회를 변경

하고 작동합니다. 지금은 CreatedDateTime 만 표시되므로 쿼리가 반환됩니다.

관련 문제