togethere.cloud/split_sql.ps1

29 lines
903 B
PowerShell

$path = "c:\Users\scans\Downloads\wspolnie_openg.sql"
$l = [System.IO.File]::ReadAllLines($path)
$enc = [System.Text.Encoding]::UTF8
$sz = 0
$tgt = 1950 * 1024
$split = -1
for ($i=0;$i -lt $l.Count;$i++) {
$line = $l[$i] + "`r`n"
$sz += $enc.GetByteCount($line)
if ($sz -gt $tgt) {
for ($j=$i;$j -ge 0;$j--) {
if ($l[$j].TrimEnd().EndsWith(';')) { $split = $j; break }
}
break
}
}
if ($split -ne -1) {
Write-Host "End Part 1 Line: $($split + 1)"
Write-Host "Start Part 2 Line: $($split + 2)"
Write-Host "Context:"
for($k=($split-2);$k -le ($split+2);$k++) {
$p = if($k -eq $split){">>>"}else{" "}
Write-Host "$p $($k+1): $($l[$k])"
}
$p1Size = 0
for ($i = 0; $i -le $split; $i++) { $p1Size += $enc.GetByteCount($l[$i] + "`r`n") }
Write-Host "Estimated Size: $([Math]::Round($p1Size / 1024, 2)) KB"
}