MySQL命令行导入导出文件(全)

命令行导出数据库相关表为SQL文件

语法:mysqldump -h[主机所在IP] -u[用户名] -p [要导出的数据库]>[导出的路径//[文件名].sql]
例子:

1
mysqldump -hlocalhost -uroot -p reward_testdb>E://reward_testdb.sql

导出数据库表结构

语法:mysqldump -d [数据库名] -u [用户名] -p[密码] --tables [表名1] [表名2] [表名3]>[导出路径]
例子:

1
mysqldump -d reward_testdb -u root -p123456 --tables t_awards t_awards_detail >D:\t_awards.sql

导出数据库表结构和数据

语法(去掉-d):mysqldump [数据库名] -u [用户名] -p[密码] --tables [表名1] [表名2] >[导出路径]
例子(去掉-d):

1
mysqldump reward_testdb -u root -pa123456 --tables t_awards t_awards_detail >D:\t_awards.sql

命令行导入SQL文件到MySQL

命令行登陆到MySQL并选择要使用的数据库

语法:mysql -u[用户名] -h[主机所在地址,默认不写是localhost] -p
例子:

1
2
mysql -uroot -p
use 数据库名;

将SQL文件进行导入

语法:source [所在的路径//*.sql]
例子:

1
source E://t_awards_detail.sql

参考链接1参考链接2参考链接3参考链接4

命令行直接导出Excle文件

在my.ini文件中新增下面的配置,重启MySQL

  • 在My.ini文件的[mysqld]下面添加;文件路径必须存在否则MySQL服务无法启动
1
2
# ""表示所有目录都有权限,也可写成secure_file_priv=""
secure-file-priv=""
  • 停止、重启MySQL(不区分大小写)
1
2
3
4
5
6
C:\Users\liquanhong>net stop MySQL
MySQL 服务正在停止.
MySQL 服务已成功停止。
C:\Users\liquanhong>net start MySQL
MySQL 服务正在启动 .
MySQL 服务已经启动成功。

命令行登陆到MySQL并选择要使用的数据库

语法:mysql -u[用户名] -h[主机所在地址,默认不写是localhost] -p

1
2
mysql -uroot -p
use 数据库名;

导出命令

语法:SQL查询语句 into outfile ‘文件路径(左划线分割)’;
例子一(不含列名):

1
2
# 文件后缀可以随便写 txt、csv、xls、xlsx、sql都可以
select achievement_id,name from t_achievement limit 20 into outfile 'd:/export/achievement1.xlsx';

例子二(含列名):

1
2
# 用union all查列名,文件后缀可以随便写 txt、csv、xls、xlsx、sql都可以
SELECT 'achievement_id','name' union all select achievement_id,name from t_achievement limit 20 into outfile 'd:/export/achievement.txt';

如果数据库文本有换行,用上面的两个SQL格式会乱,所以需要对每个字段的数据都用" "包起来,然后用,分割
例子三(支持导出换行的文本不乱码,需要csv格式才行,推荐):

1
2
# 用union all查列名,FIELDS TERMINATED BY 和ENCLOSED BY把每个字段的数据包起来
SELECT 'achievement_id','name' union all select achievement_id,name from t_achievement limit 20 into outfile 'd:/export/achievement.csv' FIELDS TERMINATED BY "," ENCLOSED BY '"';

命令行直接导入Excle文件

使用命令load data local infile

设置客户端加载功能,并选择数据库

若不设置,会出现Loading local data is disabled; this must be enabled on both the client and server sides错误。
按顺序执行下面的命令即可:

1
2
3
4
5
6
# 登陆MySQL
mysql --local-infile=1 -uroot -p
# 设置客户端加载功能
set global local_infile = 1;
# 选择数据库
use [数据库名];

导入命令

语法:load data local infile ‘文件路径(左划线分割)’ into table 数据库表名;
例子:

1
load data local infile 'd:/export/t_achievement_company_map.xls'  into  table t_achievement_company_map;

使用命令mysqlimport

在my.ini文件中新增下面的配置,重启MySQL

参考前文

导入命令

使用命令mysqlimport时文件名必须和数据库里面表名一样。
语法:mysqlimport -uroot -p 数据库名 文件路径(左划线分割)
例子:

1
C:\Users\liquanhong> mysqlimport -uroot -p reward_testdb d:/export/t_achievement_company_map.xls

详细语法参考官网
写了这么多,还是数据库连接工具香啊😂