Fehler beim Wiederherstellen einer großen MySQL-Datenbank über Powershell

Fehler beim Wiederherstellen einer großen MySQL-Datenbank über Powershell

Ich habe ein PowerShell-Skript, das täglich eine per SFTP von einer anderen Organisation heruntergeladene Datenbank wiederherstellt. Vor Kurzem habe ich angefangen, eine andere Datenbank zu erhalten, die viel größer ist. MySQL ist ein Azure-Dienst mit Version 5.6. Ich habe es auch mit einer temporären Version 5.7 ausprobiert. Das Skript funktioniert bei 700 MB großen Dateien, schlägt aber bei Dateien > 1 GB fehl. Die Verwendung von MySQL Workbench auf meinem Desktop oder auf dem Server funktioniert, es liegt also keine Speicherbeschränkung auf dem Server vor.

Der Codeausschnitt ist sehr ähnlich zu [Wiederherstellen einer MySQL-Datenbank über 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

Ich erhalte den folgenden Fehler:

Das Programm „mysql.exe“ konnte nicht ausgeführt werden: Es wurde eine Ausnahme vom Typ „System.OutOfMemoryException“ ausgelöst.

Ich denke, es liegt daran, dass der Get-Content an den MySQL-Befehl weitergeleitet wird und versucht, ihn in den Speicher zu laden. Gibt es eine Möglichkeit, dies anders zu verarbeiten? Ich habe eine Weile nach Beispielen gesucht, aber keines gefunden, das ich einfach verwenden kann.

Ich bin für jede Hilfe dankbar.

Antwort1

Ich wünschte, ich hätte selbst eine Antwort gefunden, aber der Dank gebührt dem Microsoft-Support.

$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 

verwandte Informationen