MySQLDUMP和CMD / Powershell之间的区别

时间:2014-08-20 06:52:16

标签: powershell cmd mysqldump

当我从powershell使用此命令进行mysql转储时,我得到一个不可用且更大的文件。当我使用来自CMD窗口的相同命令时,当我使用GUI工具导出时,我得到一个具有相同大小的SQL文件,我可以使用GUI以及命令行来恢复备份。使用PowerShell进行转储时,它拒绝恢复备份。

我使用此命令 E:\ Script \ mysqldump.exe -u root -ppassword -h 127.0.0.1 xticket --lock-tables --disable-keys --add-drop-table --routines --databases> \\位置\ backup.sql

这是我打算使用的powershell脚本:

$Date = [Int] (Get-Date).DayOfWeek
$Su = 0
$Mo = 1
$Tu = 2
$We = 3
$Th = 4
$Fr = 5
$Sa = 6

If ($Date -eq $Mo) 
{
 & "E:\Script\mysqldump.exe" -u root -ppassword -h 127.0.0.1 xticket --lock-tables --disable-keys --add-drop-table --routines --databases > \\location\mobackup.sql
}

ElseIf ($Date -eq $Tu) 
{
 & "E:\Script\mysqldump.exe" -u root -ppassword -h 127.0.0.1 xticket --lock-tables --disable-keys --add-drop-table --routines --databases > \\location\tubackup.sql
}

ElseIf ($Date -eq $We)
{
 & "E:\Script\mysqldump.exe" -u root -ppassword -h 127.0.0.1 xticket --lock-tables --disable-keys --add-drop-table --routines --databases > \\location\webackup.sql
}

ElseIf ($Date -eq $Th)
{
 & "E:\Script\mysqldump.exe" -u root -ppassword -h 127.0.0.1 xticket --lock-tables --disable-keys --add-drop-table --routines --databases > \\location\thbackup.sql
}

ElseIf ($Date -eq $Fr)
{
 & "E:\Script\mysqldump.exe" -u root -ppassword -h 127.0.0.1 xticket --lock-tables --disable-keys --add-drop-table --routines --databases > \\location\frbackup.sql
}

ElseIf ($Date -eq $Sa)
{
 & "E:\Script\mysqldump.exe" -u root -ppassword -h 127.0.0.1 xticket --lock-tables --disable-keys --add-drop-table --routines --databases > \\location\sabackup.sql
}

ElseIf ($Date -eq $Su)
{
 & "E:\Script\mysqldump.exe" -u root -ppassword -h 127.0.0.1 xticket --lock-tables --disable-keys --add-drop-table --routines --databases > \\location\subackup.sql
}

1 个答案:

答案 0 :(得分:0)

首先,您可以用更简单的方式重写脚本:

$dayOfWeek = (Get-Date).DayOfWeek.ToString().ToLower().substring(0, 2)
$backupFile = $dayOfWeek + "backup.sql"

& "E:\Script\mysqldump.exe" -u root -ppassword -h 127.0.0.1 xticket --lock-tables --disable-keys --add-drop-table --routines --databases | Out-File $backupFile -Encoding ASCII

请注意,我使用Out-File而不是管道传输到文件。我怀疑你看到的行为差异是由于文件编码(ASCII / UTF8)。但是,不确定这是你的问题。我没有在我的机器上安装mysqldump,我无法测试它。只是纯粹的猜测。