Monthly Archive 20 June 2024

ByPatrick

Interaction avec une base de données Oracle à l’aide de PowerShell

Dans cet article, nous explorons un script PowerShell qui établit une connexion à une base de données Oracle, exécute une requête SQL et traite les potentielles erreurs. Ce script est parfait pour les administrateurs de base de données ou les développeurs qui ont besoin d’automatiser la gestion et la récupération de données Oracle.

Chargement de l’assemblage OracleClient

Le script débute par tenter de charger l’assemblage nécessaire pour interagir avec Oracle, System.Data.OracleClient, en utilisant la méthode LoadWithPartialName. Cette méthode est obsolète et il est recommandé d’utiliser Add-Type avec le chemin complet de l’assembly pour les versions actuelles de PowerShell. Si l’assemblage est chargé avec succès, un message de confirmation s’affiche. Dans le cas contraire, un message d’erreur est affiché et le script se termine avec Exit 1, indiquant une sortie anormale.

$Assembly = [System.Reflection.Assembly]::LoadWithPartialName("System.Data.OracleClient")

if ( $Assembly ) {
    Write-Host "System.Data.OracleClient Loaded!"
}
else {
    Write-Host "System.Data.OracleClient could not be loaded! Exiting..."
    Exit 1
}

Configuration de la chaîne de connexion

Ensuite, le script configure une chaîne de connexion à la base de données Oracle. Cette chaîne contient l’identifiant utilisateur, le mot de passe et la source de données, qui sont des éléments cruciaux pour établir une connexion sécurisée.

$OracleConnectionString = "user id=#####;password=#######;data source=######"

Connexion à la base de données Oracle

Avec la chaîne de connexion définie, le script crée un nouvel objet OracleConnection et ouvre la connexion à la base de données.

$OracleConnection = New-Object System.Data.OracleClient.OracleConnection($OracleConnectionString);
$OracleConnection.Open()

Exécution d’une requête SQL

Dans un bloc try, le script prépare une commande SQL pour interroger le nombre d’enregistrements dans une table donnée où la colonne IS_DISABLED est égale à 0.

$OracleSQLQuery = "select count (*) from d_d where IS_DISABLED = 0"

Création et exécution de la commande

Un objet OracleCommand est créé et configuré avec la requête SQL et la connexion à la base de données. La commande est de type texte.

$SelectCommand1 = New-Object System.Data.OracleClient.OracleCommand;
$SelectCommand1.Connection = $OracleConnection
$SelectCommand1.CommandText = $OracleSQLQuery
$SelectCommand1.CommandType = [System.Data.CommandType]::Text

Récupération des résultats

Les résultats de la requête sont chargés dans un objet DataTable en utilisant ExecuteReader sur l’objet commande.

$SelectDataTable = New-Object System.Data.DataTable
$SelectDataTable.Load($SelectCommand1.ExecuteReader())

Gestion des erreurs

Si une erreur survient pendant l’exécution de la requête, le script capture l’exception et affiche un message d’erreur. Cela permet d’identifier facilement les problèmes sans interrompre brusquement le script.

catch {
    Write-Host "Error while retrieving data!"
}

Conclusion

Ce script PowerShell est un outil simple mais puissant pour automatiser la récupération de données d’une base de données Oracle. Il est essentiel de remplacer les marqueurs de position pour l’identifiant utilisateur, le mot de passe et la source de données par des valeurs réelles pour assurer le bon fonctionnement du script. De plus, une gestion des erreurs robuste garantit que le script peut traiter les imprévus de manière élégante et informative.