Экспорт PostgreSQL Query в CSV с PowerShell - PullRequest
0 голосов
/ 16 мая 2018
$sf = "\\\\domain\\dept\\dcgsi\\Extracts\\Tableau_Unlicensed_Users.csv"

if (Test-Path $sf){
    Remove-Item $sf
}

$query = @"
\\copy (SELECT Name 
FROM _users 
WHERE licensing_role_name = 'Unlicensed')
TO $sf
WITH CSV DELIMITER ','
"@ 
$conn = New-Object -ComObject ADODB.Connection

# use existing 64 bit ODBC System DSN that we set up manually
$conn.Open('PostgreSQL30')  
$conn.Execute($query)
$conn.Close()

Я получаю сообщение об ошибке "\" в строке с $conn.Execute(), когда пытаюсь это сделать.Я предполагаю, что это связано с экранированием символов, и, возможно, я делаю это неправильно.

Есть ли лучший способ сделать это с PowerShell, если мне просто нужно получить поле имени любой записи из _users и вывести егоto CSV?

В конце концов, я добавлю к этому больше, чтобы просмотреть каждую запись в CSV и выполнить tabcmd для удаления всех нелицензированных пользователей.

1 Ответ

0 голосов
/ 16 мая 2018
$sf = "\\domain\dept\dcgsi\Extracts\Tableau_Unlicensed_Users.csv"

if (Test-Path $sf){
    Remove-Item $sf
}

$query = @"
SELECT Name 
FROM _users 
WHERE licensing_role_name = 'Unlicensed'
"@ 

function Get-ODBC-Data{
    $conn = New-Object System.Data.Odbc.OdbcConnection
    $conn.ConnectionString = "DSN=PostgreSQL30;"
    $conn.Open()
    $cmd = New-object System.Data.Odbc.OdbcCommand($query, $conn)
    $ds = New-Object system.Data.DataSet
    (New-Object System.Data.Odbc.OdbcDataAdapter($cmd)).Fill($ds) | Out-Null
    $conn.Close()
    $ds.Tables[0] | Export-Csv $sf
}

Get-ODBC-Data

Мне понравилось 99% того, что мне нужно; Мне просто нужно обработать CSV сейчас и отбросить первые две строки. Первая строка - это сообщение с информацией о типе, а вторая - заголовок столбца.

...