param( [string]$compressedFile ) # Load .NET assembly for file handling Add-Type -AssemblyName System.IO.Compression.FileSystem # Resolve absolute path of the compressed file $absoluteCompressedFile = Resolve-Path $compressedFile # Generate file names $workingDir = Split-Path $absoluteCompressedFile $uncompressedFile = Join-Path $workingDir ($compressedFile -replace '^\.\\', '' -replace '\.sql\.gz$', '_uncompressed.sql') $modifiedFile = Join-Path $workingDir ($compressedFile -replace '^\.\\', '' -replace '\.sql\.gz$', '_modified.sql') $recompressedFile = Join-Path $workingDir ($compressedFile -replace '^\.\\', '' -replace '\.gz$', '_modified.sql.gz') # Decompress .sql.gz file using .NET Framework [System.IO.Compression.ZipFile]::ExtractToDirectory($absoluteCompressedFile, $workingDir) # Read content of uncompressed file $content = Get-Content -Path $uncompressedFile -Raw # Replace text $content = $content -replace 'utf8mb4_0900_ai_ci', 'utf8mb4_general_ci' # Write modified content to file Set-Content -Path $modifiedFile -Value $content -Encoding UTF8 # Compress .sql file back to .sql.gz using .NET Framework [System.IO.Compression.ZipFile]::CreateFromDirectory($workingDir, $recompressedFile) # Cleanup: Optionally, you can remove the uncompressed and modified files if you don't need them anymore # Remove-Item $uncompressedFile # Remove-Item $modifiedFile