本文已参与[新人创作礼]活动,一起开启掘金创作之路
1:用mysqldump备份数据库
`格式: mysqldump [选项] 数据库名 [表名] > 脚本名(存放路径)
1.导出全部数据库
mysqldump -uroot -p --all-databases > /backup/mysqldump/all.sql
2.导出指定数据库(导出test数据库)
mysqldump -uroot -p test > /backup/mysqldump/test.sql
3.备份指定数据库指定表(多个表以空格间隔,导出mysql数据库的db表和event表)
mysqldump -uroot -p mysql db event > /backup/mysqldump/2table.sql
4.备份指定数据库排除某些表(导出test数据库,排除t1和t2表)
mysqldump -uroot -p test --ignore-table=test.t1 --ignore-table=test.t2 > /backup/mysqldump/test2.sql
5.--no-data, -d 不导出任何数据,只导出数据库表结构
mysqldump -uroot -p -d test > /backup/mysqldump/test2.sql
6.-B, -B 导出带有创建数据库的sql语句,这样还原的时候就不用先创建数据库了
mysqldump -uroot -B test > /backup/mysqldump/test2.sql
6.[选项]对应的常用值 参数名 缩写 含义 --host -h 服务器IP地址
--port -P 服务器端口号
--user -u MySQL 用户名
--pasword -p MySQL 密码
--databases 指定要备份的数据库
--all-databases 备份mysql服务器上的所有数据库
--compact 压缩模式,产生更少的输出
--comments 添加注释信息
--complete-insert 输出完成的插入语句
--lock-tables 备份前,锁定所有数据库表
--no-create-db/--no-create-info 禁止生成创建数据库语句
--force 当出现错误时仍然继续备份操作
--default-character-set 指定默认字符集
--add-locks 备份数据库表时锁定数据库表
--no-data -d 只导出数据结构
-B 导出带有创建数据库的语句
`
2:还原备份
`1:不进入mysql直接还原生成的备份文件(前提是要有这个buy数据库,如果没有就先新建)
mysql -uroot -proot buy < G:/backup_xway/backup/20200403/buy.sql
注:注意还原这里是“<”符号,并且是mysql,而备份是‘>’符号,并且是mysqldump
2:先进入mysql,在用source命令还原
1.mysql -uroot -p
2.use buy;//进入要还原的数据库,这里名称必须要和备份数据库的名称一样,没有就先新建
3.source G:/backup_xway/backup/20200403/buy.sql`
3:用mysql命令导出excel,csv,txt等文件
`1:有时候我们想把某张表的部分数据导出来,但是又不想写代码利用程序来导出,那我们可以直接进入到mysql进行导出
1.先看看mysql有没有设置导出文件只能导出到哪个目录
2.show variables like '%secure%';
3.如果secure_file_priv项的值是空,那就是不限制导出目录,如果是null,则是禁止导出,如果是一个路径,那你导出的文件就必须是在该目录下
4.secure_file_priv的值是可以在my.ini配置文件的[mysqld]中设置的,设置空就是不限制,设置null,则是禁止导出,设置一个路径,那你导出的文件就必须是在该目录下
5.把users表导出成excel,你导出文件名后缀是.xlxs那就是导出excel,后缀是.csv那就是导出csv。
1.select * from users where id>10 into outfile '导出目录/文件名.后缀'
6.这样导出更灵活,而且速度非常快
` 4.现在导出是没问题了,可是还有个问题就是导出的文件第一行是没有列名的,这样很不友好。
`1.导出带有列名的文件
select * into outfile 'H:/www/standard/storage/app/public/uploads/20200721/user.xlsx' fields terminated by '\t' OPTIONALLY ENCLOSED BY '"' lines terminated by '\n' from (select '姓名','密码','状态' union select username,password,status from users) b;
注意的是select 'ID','用户名'。。,这个ID和用户名就是自定义的列名,后面的select id,username就是对应的值。其实就是多插入一条列名的记录出来,sql语句其实也可以这样写select 'ID','username' union select id,nickname from users into outfile 'G:/backup_xway/backup/20200403/users123.xlsx' fields terminated by ',' lines terminated by '\n',需要注意的是如果导出的excel文件那fields terminated by ','这个就不能设置以逗号为分隔符,因为到时候导出的时候全部在一列了,只有导出csv文件的时候才可以用逗号作为分隔符
参数: FIELDS TERMINATED BY ',' 字段间分割符
OPTIONALLY ENCLOSED BY '"' 将字段包围 对数值型无效
LINES TERMINATED BY '\n' 换行符 `
1:先将数据excel另存为csv,并将字符编码改为数据的编码,每列必须要和数据表的字段一一对应,不然没法导入成功
2:执行命令
load data infile 'G:/backup_xway/backup/order.csv' into table goods CHARACTER SET utf8 FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n' IGNORE 1 LINES;