Utiliser PostgreSQL avec PowerShell

- Installer le pilote psqlODBC à l'aide de l'application Stack Builder ou en téléchargeant un installeur sur le site PostGreSQL.

- Vérifier le nom du pilote installé en utilisant l'Administrateur de sources de données ODBC ("PostgreSQL Unicode(x64)" ou "PostgreSQL ODBC Driver(Unicode)" par exemple).

- Adapter le script Powershell suivant pour tester la connexion au serveur de base de données PostgreSQL. Le nom du pilote PostgreSQL doit correspondre à celui observé dans l'Administrateur de sources de données ODBC.

$chaineDeConnexion = "Driver={PostgreSQL Unicode(x64)};Server=127.0.0.1;Port=5432;Database=PortefeuilleValeurs;Uid=florent.mazzone;Pwd=;"

$postGreSqlConnexion = New-Object System.Data.Odbc.OdbcConnection

$postGreSqlConnexion.ConnectionString = $chaineDeConnexion;

$postGreSqlConnexion.Open();

  • Exemple: Afficher un résultat dans la console

$postGreSqlCommande = $postGreSqlConnexion.CreateCommand();

$postGreSqlCommande.CommandText = "SELECT version(); "

$postGreSqlCommande.ExecuteScalar();

  • Sauvegarder une table dans un fichier texte

$postGreSqlCommande.CommandText=" SELECT *,pg_size_pretty(pg_database_size(pg_database.datname)) AS size FROM pg_database; "

$postGreSqlReader = $postGreSqlCommande.ExecuteReader();

  • Liste des colonnes

$resultatRequete=""

for ($i=0;$i -lt $postGreSqlReader.FieldCount; $i++)

{

$resultatRequete += $postGReSqlReader.GetName($i)+ "`t"

}

  • $resultatRequete

$resultatRequete | Out-File -filepath ([Environment]::GetFolderPath("Desktop")+"\resultatRequete.txt")

while($postGreSqlReader.Read())

{

$resultatRequete=""

for ($i=0;$i -lt $postGreSqlReader.FieldCount; $i++)

{

$resultatRequete += $postGReSqlReader.GetValue($i).ToString() + "`t"

}

#1 Ligne de données

#$resultatRequete

$resultatRequete | Out-File -filepath ([Environment]::GetFolderPath("Desktop")+"\resultatRequete.txt") -append

}

$postGreSqlReader.Close();

$postGreSqlConnexion.Close();