【问题标题】:MySQLDUMP and the difference between CMD/PowershellMySQLDUMP与CMD/Powershell的区别
【发布时间】:2014-08-20 06:52:16
【问题描述】:

当我从 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 > \\location\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
}

【问题讨论】:

    标签: powershell cmd mysqldump


    【解决方案1】:

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

    $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,我无法对其进行测试。纯属猜测。

    【讨论】:

    • 感谢大卫,它成功了。问题确实是文件编码
    • 不知道你有没有,但是如何使用powershell导入sql文件?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-24
    • 2018-06-30
    相关资源
    最近更新 更多