Powershell Изменить большой файл SQL - PullRequest
0 голосов
/ 03 мая 2019

У нас есть файл SQL объемом 23 ГБ, который нельзя открыть ни в одном текстовом файле, поэтому я пытаюсь использовать скрипт Powershell.

((Get-Content D:\test.sql) -replace 'XXY','UUUUU') |Set-Content D:\test.sql

Проблема в том, что это занимает слишком много времени, текст, который я хочу изменить, остается в первой 20-й строке, поэтому я попытался

((Get-Content D:\test.sql) |Select -First 20 -replace 'xxxx','UUUU') |Set-Content D:\test.sql

Не повезло, без ошибок ничего не происходит Я что-то упустил?

1 Ответ

0 голосов
/ 03 мая 2019

Здесь два варианта для ускорения процесса чтения / записи.Оба читают по одной строке за раз, заменяют то, что вам нужно заменить, и записывают эту строку в новый выходной файл.

Первый использует .NET System.IO..File ReadLines метод:

foreach ($line in [System.IO.File]::ReadLines("D:\test.sql")) {
    Add-Content -Path 'D:\test2.sql' -Value ($line -replace 'XXY','UUUUU')
}

Возможно, даже быстрее, чем выше, будет использовать .Net System.IO.StreamReader и System.IO.StreamWriter:

$reader = New-Object System.IO.StreamReader("D:\test.sql")
$writer = New-Object System.IO.StreamWriter("D:\test2.sql")
while (($line = $reader.ReadLine()) -ne $null) {
    $writer.WriteLine(($line -replace 'XXY','UUUUU'))
}
$reader.Dispose()
$writer.Dispose()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...