mysql备份导出(excel,csv)导入一些基本用法

530 阅读4分钟

本文已参与[新人创作礼]活动,一起开启掘金创作之路

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;