Affichage des articles dont le libellé est Sql. Afficher tous les articles
Affichage des articles dont le libellé est Sql. Afficher tous les articles

jeudi 1 décembre 2016

PowerShell et PostgreSQL

Dans cet article, nous allons voir l’accès aux bases PostgreSQL avec Windows PowerShell et le Data Provider "Ngpsql.dll". L'exemple suivant montre comment se connecter sur une base PostgreSQL, et utilisation des instructions Create Table, Insert, Query, Update et Drop Table.

Référence


Avant d’exécuter le script, notez que j'ai préalablement installé un serveur "PostgreSQL Portable" sur lequel j'ai créé la base de données "Base1". J'ai également créé un dossier "npgsql" au même niveau que mon script. Ce dossier contient contient les fichiers du Data Provider NpgSQL. La table et les données peuvent être créé ensuite à l'aide des exemples de requêtes SQL présent dans le script.

Liens utiles :
- Serveur PostgreSQL portable
- Data Provider NpgSQL              

Exemple



 
#Chemin courant.
$curpath = ""
Try   { $curpath = Split-Path $MyInvocation.MyCommand.Path }
Catch { $curpath = split-path -parent $psISE.CurrentFile.Fullpath }

#Assembly.
[void][Reflection.Assembly]::LoadFile($curpath+"\npgsql\Npgsql.dll")
[void][Reflection.Assembly]::LoadFile($curpath+"\npgsql\Mono.Security.dll")

#Paramêtres PostgreSQL.
$port="5432"
$server="10.151.16.234"
$user="user1"
$password="P@ssw0rd"

#Chaine de connexion.
$database = "base1"
$connexion = "Server="+$server+";Port="+$port+";User Id="+$user+";Password="+$password+";Integrated Security=true"

function postgre_SQL([string] $ps_conn, [string] $ps_base, [string] $ps_query)
 {
   #Initialisation
   $conn = $ps_conn+";Database="+$ps_base

   #Déclaration des objets.
   $DBconn = New-Object NpgSql.NpgsqlConnection($conn)
   $cmd    = New-Object Npgsql.NpgsqlCommand
   $ds     = New-Object System.Data.DataSet
   $da     = New-Object Npgsql.NpgsqlDataAdapter

   #Exécuter.
   $cmd.CommandTimeout = 30
   $cmd.Connection     = $DBconn
   $cmd.CommandText    = $ps_query
   $da.SelectCommand   = $cmd
   [void]$da.Fill($ds)

   #Ferme la connexion.
   $DBconn.Close()

   #Retour.
   return $ds.Tables[0]
 }

#---------------------------------------------------------------------------#
#Voici la liste de différentes requêtes SQL que vous pouvez essayer.
#Supprimez le # devant la requête SQL que vous souhaitez tester.
#---------------------------------------------------------------------------#
#Créer une table.
#$psQuery = "CREATE TABLE Table1(Colonne1 nchar(16) PRIMARY KEY NOT NULL, Colonne2 nchar(16));"
#Ajouter une ligne.
#$psQuery = "INSERT INTO Table1(Colonne1,Colonne2) VALUES ('Jumbor','PowerShell');"
#Lire une table.
#$psQuery = "select * from Table1;"
#Lire une ligne.
#$psQuery = "select * from Table1 WHERE Colonne1 = 'Jumbor12';"
#Modifier une valeur.
#$psQuery = "UPDATE Table1 SET Colonne2 = 'PowerShell 2.0' WHERE Colonne2 = 'PowerShell';"
#Supprimer une ligne.
#$psQuery = "DELETE FROM Table1 WHERE Colonne1 = 'Jumbor12';"
#Supprimer une table.
#$psQuery = "DROP TABLE Table1;"
#---------------------------------------------------------------------------#

#Affiche la requête exécutée.
Write-Host $psQuery

#Exécute la requête.
$datas = postgre_SQL $connexion $database $psQuery
$datas | Out-GridView

#Exécution terminé.
Write-Host "Exécution terminé."

#Fin.

mercredi 18 décembre 2013

PowerShell et MsSQL

Dans cet article, nous allons voir l’accès aux bases MsSQL avec Windows PowerShell. J'ai choisi de vous présenter ici une fonction qui permet d’exécuter des requêtes sur une base MsSQL. L'exemple suivant montre comment se connecter sur une base MsSQL, et utilisation des instructions Create Table, Insert, Query, Update et Drop Table.

Exemple


Avant d’exécuter le script, notez que j'ai créé au préalable une base de données "Base1".  Les tables et les données peuvent être créé ensuite avec les exemples de requêtes SQL présent dans le script.


 
#Les requêtes SQL en PowerShell.
Function Sql_Query([string] $sqServer, [string] $sqBase, [string] $sqQuery)
 {
   #Etablit la connexion avec la base SQL.
   $Connection = New-Object System.Data.SqlClient.SqlConnection
   $Connection.ConnectionString = "Server = $sqServer; Database = $sqBase; Integrated Security = True"

   #Crée une commande SQL.
   $sqlCmd = New-Object System.Data.SqlClient.SqlCommand
   $sqlCmd.CommandTimeout = 30
   $sqlCmd.CommandText = $sqQuery
   $sqlCmd.Connection = $Connection

   #Exécute et récupère le résultat.
   $DataSet = New-Object System.Data.DataSet
   $Adapter = New-Object System.Data.SqlClient.SqlDataAdapter
   $Adapter.SelectCommand = $sqlCmd
   $Adapter.Fill($DataSet)

   #Ferme la connexion avec la base SQL.
   $Connection.Close()

   #Renvoie le résultat.
   return $DataSet.Tables[0]
 }

#Paramètres de connexion.
$SQLSERVER = "."                #Le "." représente le poste local.
$SQLBASE = "Base1"              #Nom de la base SQL.
$sqlQuery = "SELECT @@VERSION"  #Requête par défaut.

#-------------------------------------------------------------------------#
#Voici la liste de différentes requêtes SQL que vous pouvez essayer.
#Supprimez le # devant la requête SQL que vous souhaitez tester.
#-------------------------------------------------------------------------#
#Créer une table.
#$sqlQuery = "CREATE TABLE [dbo].[Table1]([Colonne1] [nchar](20) NULL, [Colonne2] [nchar](20) NULL) ON [PRIMARY]"
#Ajouter une ligne.
#$SqlQuery = "INSERT INTO [Base1].[dbo].[Table1]([Colonne1],[Colonne2]) VALUES ('Jumbor12','PowerShell')"
#Lire une table.
#$SqlQuery = "select * from [Table1]"
#Lire une ligne.
#$SqlQuery = "select * from [Table1] WHERE [Colonne1] = 'Jumbor12'"
#Modifier une valeur.
#$SqlQuery = "UPDATE [Base1].[dbo].[Table1] SET [Colonne2] = 'PowerShell 2.0' WHERE [Colonne2] = 'PowerShell'"
#Supprimer une ligne.
#$SqlQuery = "DELETE FROM [Base1].[dbo].[Table1] WHERE [Colonne1] = 'Jumbor12'"
#Supprimer une table.
#$sqlQuery = "DROP TABLE [dbo].[Table1]"
#-------------------------------------------------------------------------#

#Affiche la requête exécutée.
Write-Host $sqlQuery

#Exécute la requête.
$rtn = Sql_Query $SQLSERVER $SQLBASE $sqlQuery
Foreach ($raw in $rtn)
 {
   #Ici j'affiche le retour pour les requêtes de lecture de données.
   Try { Write-Host "name :" $raw[0] $raw[1] } catch {}
 }
 Write-Host "Exécution terminé."

#Fin.