Ошибка восстановления большой базы данных MySQL через PowerShell

Ошибка восстановления большой базы данных MySQL через PowerShell

У меня есть скрипт PowerShell, который ежедневно восстанавливает базу данных, загруженную по sftp из другой организации. Недавно начал получать еще одну базу данных, которая намного больше. MySQL — это служба Azure, работающая под управлением версии 5.6. Я также пробовал ее на временной версии 5.7. Скрипт работает для файлов размером 700 МБ, но дает сбой при размере файла > 1 ГБ. Использование MySQL Workbench на моем рабочем столе или на сервере работает, так что это не ограничение памяти на сервере.

Фрагмент кода очень похож на [восстановление базы данных mysql через powershell:

$MySQLHost = 'aaaa.mysql.database.azure.com'
$MySQLAdminUserName = 'bbbb@aaaa-qa'
$MySQLAdminPassword = 'zzzzz'
$MySQLDatabase = 'abcde'

$MyFilePath = "C:\SFTP\qcis_backup\"
$MyUnzipDirectory = $MyFilePath +  "database" + "\"
$MyDumpFilePath = $MyUnzipDirectory + "dump.sql"

get-content $MyDumpFilePath | &"C:\Program Files\MySQL\MySQL Workbench 8.0 CE\mysql.exe" -h $MySQLHost -u $MySQLAdminUserName --password=$MySQLAdminPassword --database=$MySQLDatabase

Возникает следующая ошибка:

Не удалось запустить программу «mysql.exe»: возникло исключение типа «System.OutOfMemoryException»

Я думаю, это из-за того, что get-content передается в mysql cmd и пытается загрузиться в память. Есть ли способ обработать это по-другому? Искал примеры некоторое время, но не нашел ни одного, который мог бы легко использовать.

Будем признательны за любую помощь.

решение1

Хотелось бы найти ответ самому, но заслуга в этом принадлежит службе поддержки Microsoft.

$MySQLcmd = -join("&","`"C:","\Program Files\MySQL\MySQL Workbench 8.0 CE\mysql.exe`"")
$MySQLcmd = -join($MySQLcmd," -h ", $MySQLHost, " -u ",$MySQLAdminUserName," --password=",$MySQLAdminPassword," --database=",$MySQLDatabase," -e `"source ",$MyDumpFilePath,"`"")

invoke-expression $MySQLcmd 

Связанный контент