次のコマンドがあるとします。
"C:\Program Files\MySQL\MySQL Server 5.7\bin\mysql" -u user --password=pass dbname < backup.sql
cmd
では正常に機能しますが、PowerShellでは次のようになります。
At line:1 char:53
+ "C:\Program Files\MySQL\MySQL Server 5.7\bin\mysql" -u user --password=pass dbna ...
+ ~~
Unexpected token '-u' in expression or statement.
At line:1 char:56
+ "C:\Program Files\MySQL\MySQL Server 5.7\bin\mysql" -u user --password=pass dbna ...
+ ~~~~
Unexpected token 'user' in expression or statement.
At line:1 char:84
+ ... rd=pass dbname < backup.sql
+ ~
The '<' operator is reserved for future use.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : UnexpectedToken
二重引用符を削除すると、PowerShellでのエラーは少なくなりますが、cmd
ではまったく機能せず、次のエラーが発生します。
'C:\Program' is not recognized as an internal or external command,
operable program or batch file.
PowerShellでは、次のようになります。
At line:1 char:82
+ ... rd=pass dbname < backup.sql
+ ~
The '<' operator is reserved for future use.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : RedirectionNotSupported
では、backup.sqlをmysql
にフィードするにはどうすればよいですか?
Linuxではピッピングがうまくいくと思います。例えば。
C:\Program Files\MySQL\MySQL Server 5.7\bin\mysql -u user --password=pass dbname | cat backup.sql
しかし、それは私にこのエラーを与えます:
C:\Program : The term 'C:\Program' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ C:\Program Files\MySQL\MySQL Server 5.7\bin\mysql -u user --password=pass dbname ...
+ ~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Program:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
二重引用符を再度追加しても機能しません。
何か案は?
使用する Get-Content
ファイルを読み取ってパイプする|
それをあなたの命令に。使用する &
コマンドを実行します。
get-content 'c:\folder\backup.sql' | &"C:\Program Files\MySQL\MySQL Server 5.7\bin\mysql.exe" -u user --password=pass dbnamedbname