mysql - Cannot run a database restore on Powershell because of < character -
i'm trying run following command:
&$parameterhash["mysql"] -u $parameterhash["user"] -p"$($parameterhash['password'])" -h $parameterhash["host"] $parameterhash['database'] `< $parameterhash['backup-path']
pay attention part of whole command:
$parameterhash['database'] `< $parameterhash['backup-path']
this syntax of mysql
command-line restore backup (i.e. a sql script) file system location given database name.
first of all, had escape >
in powershell backtick.
the issue entire command isn't recognized mysql
command line when run powershell. once run it, mysql
outputs help.
if output command string , try run in regular cmd
(i.e. cmd.exe
) works expected.
for now, can't figure out what's going on.
update
i've tried this:
$restoreargs = "-u $($parameterhash["user"]) -p""$($parameterhash['password'])"" -h $($parameterhash["host"]) $($parameterhash['database']) < $($parameterhash['backup-path'])" start-process $parameterhash["mysql"] $restoreargs
...and got same result.
powershell doesn't support input redirection, output redirection. don't have mysql @ hand right now, can't test, try
get-content $parameterhash['backup-path'] | &$parameterhash["mysql"] -u $parameterhash["user"] -p"$($parameterhash['password'])" -h $parameterhash["host"] $parameterhash['database']
if input must single string call get-content
parameter -raw
(powershell v3 , newer):
get-content $parameterhash['backup-path'] -raw | ...
or pipe get-content
output through out-string
first:
get-content $parameterhash['backup-path'] | out-string | ...
another option run commandline cmd, support input redirection:
$mysql = $parameterhash["mysql"] $user = $parameterhash["user"] $pass = $parameterhash['password'] $server = $parameterhash["host"] $db = $parameterhash['database'] $backup = $parameterhash['backup-path'] cmd /c "$mysql -u $username -p $password -h $server -d $db < $backup"
Comments
Post a Comment