0

我正在尝试编写一个执行 .sql 文件中包含的 SQL 查询的 Powershell 脚本

Function RunSQLScript ($connstring, $filePath)
{
    $query = get-content  $filePath;

    $DTSet = New-Object System.Data.DataSet;
    $Conn=New-Object System.Data.SQLClient.SQLConnection $connstring;
    $Conn.Open();
    try
    {
        $DataCmd = New-Object System.Data.SqlClient.SqlCommand;
        $MyQuery = $query;
        $DataCmd.CommandText = $MyQuery;
        $DataCmd.Connection = $Conn;
        $DAadapter = New-Object System.Data.SqlClient.SqlDataAdapter;
        $DAadapter.SelectCommand  = $DataCmd;
        $DAadapter.Fill($DTSet) | Out-Null;
        for ($i = 0; $i -lt $DTSet.Tables.Count; $i++) {
           Write-Host $DTSet.Tables[$i];
        }
    }
    finally
    {
        $Conn.Close();
        $Conn.Dispose();
    }

    return $DTSet;
}

内部 Write-Host 显示的是 DataTable 名称而不是 DataRows。

如果我在 Powershell 控制台中手动创建一个带有 DataTable 的 DataSet,Write-Host 会向我显示 DataTable 行中的数据,所以我无法真正弄清楚为什么它在前面的脚本中没有这样做。

你能给我一些关于如何显示数据表中包含的数据而不是表名的线索吗?

谢谢

4

1 回答 1

2

这段代码对我很有帮助,如果有人需要,可以在这里发布。

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

这会在屏幕上产生一个漂亮的类似表格的输出。

于 2015-07-30T13:49:13.710 回答