想做网站要学什么,企业网页策划案,出口外贸网站建设,企业网站深圳一.背景 用的windows server 2019服务器#xff0c;mysql8.0.34#xff0c;还是应该每天备份一下。以前做了很多次#xff0c;主要是带了2个徒弟#xff0c;还是要写出来。
二.备份脚本
chcp 936
set date_tmp%date:~0,10%
set datetime%date_tmp:/%%time:~0,2%%time:~3,…一.背景 用的windows server 2019服务器mysql8.0.34还是应该每天备份一下。以前做了很多次主要是带了2个徒弟还是要写出来。
二.备份脚本
chcp 936
set date_tmp%date:~0,10%
set datetime%date_tmp:/%%time:~0,2%%time:~3,2%%time:~6,2%
set datetime%datetime: 0%
set executebackmysqldump -uroot -proot --default-character-setutf8 --ignore-tablepanguaxe.belt_weigher --ignore-tablepanguaxe.quality_data panguaxe --result-fileC:\SoftwareDownloads\dbbacks\%datetime%.sql
echo %executeback%
cmd /k %executeback%
三.相关知识及脚本说明
1.windows的dos下获取当前日期字符串 第一行chcp 936 是指定当前dos窗口使用gbk字符集。 第二行和第三行 set date_tmp%date:~0,10% set datetime%date_tmp:/%%time:~0,2%%time:~3,2%%time:~6,2% 实现了取出年月日时分秒字符串赋值给datetime这个变量。格式例如:20240112165412
2.windows的dos下把一个字符串作为命令去执行 第六行cmd /k %executeback% 就是把变量executeback对应的字符串值作为windows的dos命令去执行。
3.mysqldump导出时忽略表、指定导出文件、指定字符集解决乱码 第四行
set executebackmysqldump -uroot -proot --default-character-setutf8 --ignore-tablepanguaxe.belt_weigher --ignore-tablepanguaxe.quality_data panguaxe --result-fileC:\SoftwareDownloads\dbbacks\%datetime%.sql
拼凑了mysqldump导出命令的字符串。
其中--ignore-table数据库.表名1 就是写忽略哪个表不导出可以写多个。
--result-filexx.sql就是指定导出文件
--default-character-setutf8 就是指定导出的字符集解决乱码。根据实际情况如果数据库是gbk就用gbk看数据库具体是啥。看数据库字符集的命令可以用 SHOW CREATE DATABASE your_database_name; ps:我在过程中还遇到了特殊问题就是指定了字符集仍然是乱码。原因是我用的类似这样的命令来指定的导出文件。mysqldump -uroot -proot --default-character-setutf8 xx.sql
用来指定文件是windows的命令跟windos当前dos窗口的字符集有关所以不管怎么指定字符集都会是乱码。所以要采用mysqldump的--result-file来指定文件就不会是乱码。
我测试过如果指定数据库字符集是utf8指定dos窗口的字符集也是utf8不指定mysqldump的字符集使用符合指定导出文件中文也不会乱码。当然mysql.ini我是指定了默认字符集为utf8的。测的如下:
chcp 65001
set date_tmp%date:~3,10%
set datetime%date_tmp:/%%time:~0,2%%time:~3,2%%time:~6,2%
mysqldump -uroot -proot --ignore-tablepanguaxe.belt_weigher --ignore-tablepanguaxe.quality_data panguaxe C:\SoftwareDownloads\dbbacks\%datetime%.sql
4.时间格式出现空格导致无法导出的问题
C:\Users\Dellset date_tmp%date:~3,10%C:\Users\Dellset datetime%date_tmp:/%%time:~0,2%%time:~3,2%%time:~6,2%C:\Users\Dellecho %datetime%
20240115 84412C:\Users\Dellecho %time%8:44:41.30C:\Users\Dellset datetime%datetime: 0%C:\Users\Dellecho %datetime%
20240115084412
当时间是2024-01-15 08:44:41时time的输出并非是预期的08:44:41.30而第1个本该是0的位置显示为空。所以就用到了把空替换为0的这句话如下
set datetime%datetime: 0%