如何获取数据集中表的特定列?

时间:2017-02-07 19:08:47

标签: sql-server powershell

我正在学习Powershell脚本来自动执行一些SQL任务。我使用DataAdapter来填充数据集,我从控制台得到了一个正确的数字,表示选择了14列。但是,我坚持使用循环从数据集中打印出表的特定列。

更新:

1)TheMadTechnician解决了我的问题 - 一个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
}

1 个答案:

答案 0 :(得分:0)

将您的查询更改为SELECT * FROM MyTable,它应该有效。现在它只显示CreatedDateTime,因为这是您的查询返回的唯一内容。