#postgresql #powershell
#postgresql #powershell
Вопрос:
Я пытаюсь получить значения первых двадцати строк столбца с именем list_name из таблицы с именем mailing_list_membership .
$DBConnectionString = "Driver={PostgreSQL ANSI(x64)};Server=$MyServer;Port=$MyPort;Database=$MyDB;Uid=$MyUid;Pwd=$MyPass;"
$DBConn = New-Object System.Data.Odbc.OdbcConnection;
$DBConn.ConnectionString = $DBConnectionString;
$DBConn.Open();
$DBCmd = $DBConn.CreateCommand();
$DBCmd.CommandText = "SELECT list_name FROM mailing_list_membership LIMIT 20";
$list_name_rows_value = $DBCmd.ExecuteReader();
Write-output $list_name_rows_value
$DBConn.Close();
Однако в powershell для переменной list_name_rows_value он возвращает только количество полей.
FieldCount
----------
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
Комментарии:
1. Попробуйте
$rdr = $DBCmd.ExecuteReader(); $tbl = New-Object System.Data.DataTable; $tbl.Load($rdr); $rdr.Close(); $tbl | ft -AutoSize
2. Хорошо. Это сработало. Как называется выполнение этих команд? Он берет этот список и превращает его в объект, а затем форматирует его…. Есть ли для этого общее название, чтобы я мог просмотреть серию учебных пособий по нему….
3. Это называется «заполнение таблицы данных» 😉 PowerShell знает, как обрабатывать таблицы данных. С
SqlDataReader
объектами вам нужно выполнить работу самостоятельно.
Ответ №1:
С SqlDataReader
объектами вам нужно самостоятельно просмотреть результирующий набор, например, так:
$rdr = $DBCmd.ExecuteReader()
while ($rdr.Read()) {
$rdr.GetValue(0)
}
Удобнее, чтобы читатель заполнял таблицу данных, которую вы можете отобразить с помощью обычных Format-*
командлетов:
$rdr = $DBCmd.ExecuteReader()
$tbl = New-Object Data.DataTable
$tbl.Load($rdr)
$rdr.Close()
$tbl | Format-Table -AutoSize