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

标签 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
}

最佳答案

将查询更改为SELECT * FROM MyTable,它应该可以工作。现在,它仅显示CreatedDateTime,因为这是查询返回的唯一内容。

关于sql-server - 如何获取数据集中表的特定列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42097975/

相关文章:

powershell - 在 PowerShell 脚本中访问 Windows 任务凭据

sql-server - Azure/Powershell : Checking to see if a SQL Server exists

sql - 数据库具有完全相同的记录行..为什么会这样?

sql - 自动创建数据库比较脚本并执行

sql-server - 如何恢复我的 Azure SQL 数据库

.net - System.IO.Compression.DeflateStream 的数据格式

sql-server - 带有间隙的 Azure 数据工厂复制标识列

powershell - Powershell:为什么不能使用ForEach-Object修改元素?

PowerShell FTP 未能命中 Catch block

c# - Powershell或C#:使用CSV数据将文件从一个位置复制到另一位置