bat批处理备份Mysql数据库1045问题 以及中文乱码

120 阅读1分钟
::set BACKUPLJ=D:\backup
set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%0%time:~1,1%%time:~3,2%%time:~6,2%"

::备份数据库
cd C:\Program Files\MySQL\MySQL Server 8.0\bin\
mysqldump -u root -p@my.ini 数据库 > D:\backup\backup_%Ymd%.sql"

::打包压缩备份文件
start WinRAR M "D:\backup\mysql-%Ymd%.rar" D:\backup\*%Ymd%.*

::删除30天前的文件
forfiles /p "D:\backup" /m mysql-*.rar -d -30 /c "cmd /c del /f @path"
pause
@echo on

my.ini 放到同级目录下即可

[client]
user=root
password=密码(不能有转义字符否则批处理文件无法执行)

mysqldump 导出中文乱码

检查数据库里面的编码。(是否存在blob类型)有--default-character-set=utf8 是没有办法解决的 在原命令的基础上加上--hex-blob,搞定。
这个参数的含义是用16进制的方式导出BINARY, VARBINARY, BLOB类型的数据。
--hex-blob Dump binary strings (BINARY, VARBINARY, BLOB) in hexadecimal format.

mysqldump -h10.10.10.10 -uroot --default-character-set=utf8 --hex-blob  -p  test > /tmp/test.sql