3

ファイルからの入力で mysql を実行しようとしています。次のように機能することがわかりました。

cmd /c 'C:\Program Files\MySQL...\mysql -u user -pPassword データベース名 -f < 入力ファイル名.sql'

問題は、databasename ($database) と inputfilename.sql ($file) が変数であり、補間する必要があることです。補間を機能させる方法が見つかりませんでした。

PowerShell は入力リダイレクト用に < を実装していないため、invoke-expression と & は機能しないことに注意してください。

助言がありますか?

4

3 に答える 3

1

私はあなたとまったく同じニーズを持っていました。this oneのような他のSO回答から例を挙げて、ここに私が書いたものがあります:

$binPath = <local MySQL bin path>
$mySql = Join-Path $binPath "mysql"
...
$dosCommand = "$mySql --host=$dbHost --user=$dbUser --password=$dbPassword $dbName --verbose < ""$scriptPath"""
cmd.exe /c $dosCommand
于 2014-03-07T14:40:12.527 に答える
-1

コマンド全体を一重引用符で囲んでいるようです。変数は、単一引用符で囲まれた文字列では補間されません。これを試して:

cmd /c 'C:\Program Files\MySQL\mysql' -u user -pPassword $database -f < $file
于 2012-06-12T15:13:25.737 に答える