Question Intégration données SQL

Plus d'informations
il y a 1 mois 2 semaines #34384 par Dead
Réponse de Dead sur le sujet Intégration données SQL
Bonjour Fabien,

Effectivement, les deux variables citées ne remontent rien...
Pfiou....

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 mois 1 semaine #34410 par Dead
Réponse de Dead sur le sujet Intégration données SQL
Bonjour,

Ce sujet peut être clos, j'ai réussi en faisant un script dédié pour la connexion sql et le requêtage, en python.

Je vous remercie pour votre aide

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 mois 4 jours #34427 par Arnaud Petitjean
Réponse de Arnaud Petitjean sur le sujet Intégration données SQL
Bonsoir Dead,

Si tu as réussi à le faire en Python, tu devrais pouvoir y arriver en PowerShell également... 
Tu ne penses pas ?

Arnaud

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 mois 4 jours #34430 par Dead
Réponse de Dead sur le sujet Intégration données SQL
Bonjour Arnaud,

Effectivement, PowerShell doit le permettre étant orienté objet. Mais aucune idée pourquoi malgré la connexion à la BDD, la requête n'affichait rien, aucun résultat, alors qu'avec Python j'y suis arrivé avec la même requête. Ce sont sans doutes mes compétences qui sont encore trop justes sur PowerShell ;)

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 mois 4 jours #34431 par Arnaud Petitjean
Réponse de Arnaud Petitjean sur le sujet Intégration données SQL
Salut Dead,

Si tu veux convertir ton script Python en PowerShell, poste-le dans le forum. Je pense qu'on devrait y arriver. ;-)

Arnaud

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 mois 2 jours #34440 par Dead
Réponse de Dead sur le sujet Intégration données SQL
Bonjour Arnaud, 

Je me suis remis à tenter de faire le script sous PowerShell. 

En me basant sur mon script Python, j'ai enfin réussi!

Voici le code que j'ai fait:
# Informations de connexion à la base de données
$databaseHost = "srvsql"
$databasePort = 1521
$databaseSID = "User_SID"
$databaseUser = "DB_USER"
$databasePwd = "DB_PWD"

# Charger le module Oracle Data Provider for .NET (ODP.NET)
Add-Type -Path "C:\oracle\product\19.0.0\client_1\ODP.NET\managed\common\Oracle.ManagedDataAccess.dll"

# Fonction pour récupérer tous les codes programme et codes biens
function Get-AllCodes {
    $connectionString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=$databaseHost)(PORT=$databasePort))(CONNECT_DATA=(SERVICE_NAME=$databaseSID)));User Id=$databaseUser;Password=$databasePwd;"
    $connection = New-Object Oracle.ManagedDataAccess.Client.OracleConnection($connectionString)

    try {
        $connection.Open()

        # Requête SQL pour récupérer tous les codes programme et codes biens
        $query = "SELECT DISTINCT code_ulis FROM vue_patrimoine WHERE code_nature IN ('MA','APPT')"
        $command = $connection.CreateCommand()
        $command.CommandText = $query

        # Exécution de la requête
        $data = $command.ExecuteReader()
        $codes = @()

        while ($data.Read()) {
            $code = $data["code_ulis"]
            $codes += $code
        }
        
        Write-Host "Nombre de codes récupérés: " $codes.Count
        return $codes
    } catch {
        # Log des erreurs
        $_ | Out-File -FilePath "C:\DB\error.log" -Append
        return $null
    } finally {
        $connection.Close()
    }
}

# Fonction pour récupérer les données de la base pour un code spécifique
function Get-Data {
    param (
        [string]$codeProgramme,
        [string]$codeBien
    )

    $connectionString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=$databaseHost)(PORT=$databasePort))(CONNECT_DATA=(SERVICE_NAME=$databaseSID)));User Id=$databaseUser;Password=$databasePwd;"
    $connection = New-Object Oracle.ManagedDataAccess.Client.OracleConnection($connectionString)

    try {
        $connection.Open()

        # Requête SQL
        $query = "SELECT type_convention, DT_MLO FROM vue_patrimoine WHERE code_ulis = '$codeProgramme.$codeBien' AND code_nature IN ('MA','APPT')"
        $command = $connection.CreateCommand()
        $command.CommandText = $query

        Write-Host "Exécution de la requête: $query"

        # Exécution de la requête
        $data = $command.ExecuteReader()
        $results = @()

        while ($data.Read()) {
            $row = [PSCustomObject]@{
                type_convention = $data["type_convention"]
                DT_MLO = $data["DT_MLO"]
            }
            $results += $row
        }
        
        Write-Host "Nombre de lignes récupérées pour $codeProgramme.$codeBien: " $results.Count
        return $results
    } catch {
        # Log des erreurs
        $_ | Out-File -FilePath "C:\DB\error.log" -Append
        return $null
    } finally {
        $connection.Close()
    }
}

# Récupérer tous les codes programme et codes biens
$allCodes = Get-AllCodes

if ($allCodes) {
    $results = @()
    foreach ($code in $allCodes) {
        $parts = $code.Split('.')
        if ($parts.Length -eq 3) {
            $codeProgramme = "$($parts[0]).$($parts[1])"
            $codeBien = $parts[2]
            $data = Get-UlisData -codeProgramme $codeProgramme -codeBien $codeBien
            if ($data) {
                $results += $data
            }
        }
    }

    # Enregistrer les résultats dans un fichier CSV
    if ($results) {
        $results | Export-Csv -Path "C:\DB\file.csv" -NoTypeInformation
    } else {
        Write-Host "Aucune donnée récupérée."
    }
} else {
    Write-Host "Impossible de récupérer les codes programme et codes biens."
}

Je suis certain que ce code peut être amélioré. Mais il a fait le job de mon côté^^

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.149 secondes
Propulsé par Kunena