3

我正在尝试使用来自文件的输入来运行 mysql。我发现以下工作:

cmd /c 'C:\Program Files\MySQL...\mysql -u user -pPassword databasename -f < inputfilename.sql'

问题是 databasename ($database) 和 inputfilename.sql ($file) 是变量,需要插值。我还没有找到使插值工作的任何方法。

请注意,invoke-expression 和 & 将不起作用,因为 PowerShell 没有为输入重定向实现 <。

有什么建议么?

4

3 回答 3

1

我和你的需求完全一样。以其他 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 回答
0

您可能可以使用 Get-Content 如在此类似问题中所回答的那样,为什么“<”输入重定向未在 Powershell 中实现?

于 2012-06-12T02:28:34.500 回答
-1

看起来您将整个命令括在单引号中。变量不会被插入到单引号字符串中。尝试这个:

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