我正在学习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
}
最佳答案
将查询更改为SELECT * FROM MyTable
,它应该可以工作。现在,它仅显示CreatedDateTime,因为这是查询返回的唯一内容。
关于sql-server - 如何获取数据集中表的特定列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42097975/