PowerShell 経由で大規模な MySQL データベースを復元する際にエラーが発生しました

PowerShell 経由で大規模な MySQL データベースを復元する際にエラーが発生しました

私は毎日、別の組織から sftp で取得したデータベースを復元する PowerShell スクリプトを持っています。最近、さらに大きなデータベースを受け取り始めました。MySQL は、v 5.6 で実行されている Azure サービスです。一時的な v5.7 でも試してみました。スクリプトは 700 MB のファイルでは機能しますが、1 GB を超えるファイルでは失敗します。デスクトップまたはサーバーで MySQL Workbench を使用すると機能するため、サーバーのメモリ制約ではありません。

コードスニペットは[PowerShell 経由で MySQL データベースを復元する:

$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 

関連情報