当我从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
}
答案 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,我无法测试它。只是纯粹的猜测。