param( [Parameter(Mandatory=$true)] [string]$TableName ) function Install-RequiredModules { $requiredModule = "SqlServer" if (-not (Get-Module -ListAvailable -Name $requiredModule)) { Write-Host "Installazione modulo $requiredModule..." try { Install-Module -Name $requiredModule -Force -AllowClobber -Scope CurrentUser } catch { Write-Error "Errore durante l'installazione del modulo $requiredModule. Eseguire PowerShell come amministratore e riprovare." exit 1 } } } # Verifica e installa moduli necessari Install-RequiredModules # Importa configurazione . "$PSScriptRoot\conf.ps1" $InputFile = Join-Path $PSScriptRoot "..\extract\$TableName.csv" if (-not (Test-Path $InputFile)) { Write-Error "File non trovato: $InputFile" exit 1 } try { # Import SQL Server module if not already loaded if (-not (Get-Module -Name SqlServer)) { Import-Module SqlServer } Write-Host "Lettura dati da: $InputFile" $data = Import-Csv -Path $InputFile -Delimiter ";" if ($data.Count -eq 0) { Write-Error "Il file CSV รจ vuoto" exit 1 } Write-Host "Connessione a $env:dbHostOutput, database $env:dbName..." # Get column names from CSV $columns = $data[0].PSObject.Properties.Name $columnList = $columns -join "," # Process each row foreach ($row in $data) { # Create value list for this row $values = @() foreach ($column in $columns) { $value = $row.$column if ([string]::IsNullOrEmpty($value)) { $values += "NULL" } else { $values += "'" + $value.Replace("'", "''") + "'" } } # Create and execute insert query for this row $valuesList = $values -join "," $query = "INSERT INTO $TableName ($columnList) VALUES ($valuesList)" # Execute insert for each row $connectionString = "Server=$env:dbHostOutput;Database=$env:dbName;User Id=$env:dbUser;Password=$env:dbPassword;Encrypt=False" Invoke-Sqlcmd -ConnectionString $connectionString ` -Query $query } Write-Host "Dati importati con successo nella tabella: $TableName" } catch { Write-Error "Errore durante l'importazione dei dati: $_" exit 1 }