MySQL讲义第 36 讲——select 查询之 INTO OUTFILE参数

文章目录

  • MySQL讲义第 36 讲——select 查询之 INTO OUTFILE参数
    • 一、SELECT ... INTO OUTFILE 命令的格式
    • 二、查看和修改 secure_file_priv 参数的值
      • 1、查看 secure_file_priv 参数的值
      • 2、使用 SELECT ... INTO OUTFILE 命令导出数据
      • 3、修改 secure_file_priv 参数的值
    • 三、使用 INTO OUTFILE 参数举例
      • 1、把文本文件导出到用户指定的目录
      • 2、把字段之间的分隔符修改为逗号(,)

在 SELECT 查询语句中使用 INTO OUTFILE 参数可以将查询结果保存到文本文件中。

一、SELECT … INTO OUTFILE 命令的格式

SELECT … INTO OUTFILE 命令的格式如下:

SELECT ...
INTO OUTFILE 'file_name'
fields terminated by 'char';   --说明:
(1)OUTFILE参数指定的文件所在的路径需要有 mysql 的访问权限,否则会报错。
(2)每一条记录的数据之间默认以 Tab 分隔,也可使用 fields terminated 参数指定分隔符。
(3)执行 Select into outfile 和 Load data infile 命令需要设置 secure_file_priv 参数。该参数的设置如下:
NULL:MySQL服务会禁止执行 Select into outfile 和 Load data infile 命令;
目录名:MySQL服务只允许在这个目录中执行文件的导入和导出操作。目录必须存在,MySQL服务不会创建它;
空字符串(''):代表导出的文本文件可以放在任意位置。

二、查看和修改 secure_file_priv 参数的值

1、查看 secure_file_priv 参数的值

mysql> show variables like '%secure_file_priv%';
+------------------+-----------------------+
| Variable_name    | Value                 |
+------------------+-----------------------+
| secure_file_priv | /var/lib/mysql-files/ |
+------------------+-----------------------+
1 row in set (0.09 sec)

2、使用 SELECT … INTO OUTFILE 命令导出数据

此时,查询生成的文本文件只能放在 /var/lib/mysql-files/ 目录下:

--####  查看查询结果
mysql> SELECT-> company_id,-> company_abbreviation,-> company_fullname-> FROM-> company_information-> WHERE-> company_abbreviation REGEXP '石油$';
+------------+----------------------+--------------------------------------------------+
| company_id | company_abbreviation | company_fullname                                 |
+------------+----------------------+--------------------------------------------------+
| 000554     | 泰山石油             | 中国石化山东泰山石油股份有限公司                 |
| 300164     | 通源石油             | 西安通源石油科技股份有限公司                     |
| 601857     | 中国石油             | 中国石油天然气股份有限公司                       |
+------------+----------------------+--------------------------------------------------+
3 rows in set (0.00 sec)--#####  导出数据
mysql> SELECT-> company_id,-> company_abbreviation,-> company_fullname-> FROM-> company_information-> WHERE-> company_abbreviation REGEXP '石油$'-> INTO OUTFILE-> '/var/lib/mysql-files/company_information_bak.txt';
Query OK, 3 rows affected (0.00 sec)--##### 查看结果
[root@oracle-rac2 mysql-files]# cat company_information_bak.txt
000554  泰山石油    中国石化山东泰山石油股份有限公司
300164  通源石油    西安通源石油科技股份有限公司
601857  中国石油    中国石油天然气股份有限公司

3、修改 secure_file_priv 参数的值

(1)修改配置文件 my.cnf

[root@oracle-rac2 mysql-files]# vim /etc/my.cnf# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
### 修改 secure-file-priv 参数为空字符串,则导出的文本文件可以放到mysql能够操作的任意目录
secure-file-priv=''
character-set-server=utf8
....

(2)重启 mysql 服务

[root@oracle-rac2 mysql-files]# systemctl restart mysqld

(3)登录 mysql,查看 secure_file_priv 参数的值

mysql> show variables like '%secure_file_priv%';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| secure_file_priv |       |
+------------------+-------+
1 row in set (0.00 sec)

三、使用 INTO OUTFILE 参数举例

1、把文本文件导出到用户指定的目录

mysql> SELECT-> company_id,-> company_abbreviation,-> rtrim(company_fullname) AS company_fullname-> FROM-> company_information-> WHERE-> company_abbreviation REGEXP '^中国'-> INTO OUTFILE-> '/tmp/mysql-bak/company_information_bak01001.txt';
Query OK, 43 rows affected (0.00 sec)

查看结果:默认的字段分隔符为 tab 键。

[root@oracle-rac2 mysql-bak]# cat company_information_bak01001.txt
000009  中国宝安    中国宝安集团股份有限公司
000035  中国天楹    中国天楹股份有限公司
000797  中国武夷    中国武夷实业股份有限公司
000951  中国重汽    中国重汽集团济南卡车股份有限公司
000996  中国中期    中国中期投资股份有限公司
002116  中国海诚    中国海诚工程科技股份有限公司
600007  中国国贸    中国国际贸易中心股份有限公司
600028  中国石化    中国石油化工股份有限公司
600050  中国联通    中国联合网络通信股份有限公司
600056  中国医药    中国医药健康产业股份有限公司
600118  中国卫星    中国东方红卫星股份有限公司
600150  中国船舶    中国船舶工业股份有限公司
600176  中国巨石    中国巨石股份有限公司
600482  中国动力    中国船舶重工集团动力股份有限公司
600536  中国软件    中国软件与技术服务股份有限公司
600730  中国高科    中国高科集团股份有限公司
600877  中国嘉陵    中国嘉陵工业股份有限公司(集团)
600977  中国电影    中国电影股份有限公司
601088  中国神华    中国神华能源股份有限公司
601106  中国一重    中国第一重型机械股份公司
601111  中国国航    中国国际航空股份有限公司
601117  中国化学    中国化学工程股份有限公司
601179  中国西电    中国西电电气股份有限公司
601186  中国铁建    中国铁建股份有限公司
601318  中国平安    中国平安保险(集团)股份有限公司
601390  中国中铁    中国中铁股份有限公司
601600  中国铝业    中国铝业股份有限公司
601601  中国太保    中国太平洋保险(集团)股份有限公司
601611  中国核建    中国核工业建设股份有限公司
601618  中国中冶    中国冶金科工股份有限公司
601628  中国人寿    中国人寿保险股份有限公司
601668  中国建筑    中国建筑股份有限公司
601669  中国电建    中国电力建设股份有限公司
601766  中国中车    中国中车股份有限公司
601800  中国交建    中国交通建设股份有限公司
601857  中国石油    中国石油天然气股份有限公司
601858  中国科传    中国科技出版传媒股份有限公司
601881  中国银河    中国银河证券股份有限公司
601888  中国国旅    中国国旅股份有限公司
601965  中国汽研    中国汽车工程研究院股份有限公司
601985  中国核电    中国核能电力股份有限公司
601988  中国银行    中国银行股份有限公司
601989  中国重工    中国船舶重工股份有限公司

2、把字段之间的分隔符修改为逗号(,)

mysql> SELECT-> company_id,-> company_abbreviation,-> rtrim(company_fullname) AS company_fullname-> FROM-> company_information-> WHERE-> company_abbreviation REGEXP '^中国'-> INTO OUTFILE-> '/tmp/mysql-bak/company_information_bak01002.txt'-> FIELDS TERMINATED BY ',';
Query OK, 43 rows affected (0.00 sec)

查看结果:

[root@oracle-rac2 mysql-bak]# cat company_information_bak01002.txt
000009,中国宝安,中国宝安集团股份有限公司
000035,中国天楹,中国天楹股份有限公司
000797,中国武夷,中国武夷实业股份有限公司
000951,中国重汽,中国重汽集团济南卡车股份有限公司
000996,中国中期,中国中期投资股份有限公司
002116,中国海诚,中国海诚工程科技股份有限公司
600007,中国国贸,中国国际贸易中心股份有限公司
600028,中国石化,中国石油化工股份有限公司
600050,中国联通,中国联合网络通信股份有限公司
600056,中国医药,中国医药健康产业股份有限公司
600118,中国卫星,中国东方红卫星股份有限公司
600150,中国船舶,中国船舶工业股份有限公司
600176,中国巨石,中国巨石股份有限公司
600482,中国动力,中国船舶重工集团动力股份有限公司
600536,中国软件,中国软件与技术服务股份有限公司
600730,中国高科,中国高科集团股份有限公司
600877,中国嘉陵,中国嘉陵工业股份有限公司(集团)
600977,中国电影,中国电影股份有限公司
601088,中国神华,中国神华能源股份有限公司
601106,中国一重,中国第一重型机械股份公司
601111,中国国航,中国国际航空股份有限公司
601117,中国化学,中国化学工程股份有限公司
601179,中国西电,中国西电电气股份有限公司
601186,中国铁建,中国铁建股份有限公司
601318,中国平安,中国平安保险(集团)股份有限公司
601390,中国中铁,中国中铁股份有限公司
601600,中国铝业,中国铝业股份有限公司
601601,中国太保,中国太平洋保险(集团)股份有限公司
601611,中国核建,中国核工业建设股份有限公司
601618,中国中冶,中国冶金科工股份有限公司
601628,中国人寿,中国人寿保险股份有限公司
601668,中国建筑,中国建筑股份有限公司
601669,中国电建,中国电力建设股份有限公司
601766,中国中车,中国中车股份有限公司
601800,中国交建,中国交通建设股份有限公司
601857,中国石油,中国石油天然气股份有限公司
601858,中国科传,中国科技出版传媒股份有限公司
601881,中国银河,中国银河证券股份有限公司
601888,中国国旅,中国国旅股份有限公司
601965,中国汽研,中国汽车工程研究院股份有限公司
601985,中国核电,中国核能电力股份有限公司
601988,中国银行,中国银行股份有限公司
601989,中国重工,中国船舶重工股份有限公司

MySQL讲义第 36 讲——select 查询之 INTO OUTFILE参数相关推荐

  1. MySQL讲义第 39 讲——select 查询之函数(2):日期时间型函数

    MySQL讲义第39讲--select 查询之函数(2):日期时间型函数 文章目录 MySQL讲义第39讲--select 查询之函数(2):日期时间型函数 一.数据准备 二.MySQL 日期时间型函 ...

  2. MySQL讲义第 40 讲——select 查询之函数(3):数学函数

    MySQL讲义第40讲--select 查询之函数(3):数学函数 文章目录 MySQL讲义第40讲--select 查询之函数(3):数学函数 一.数据准备 二.MySQL 数学函数介绍 1.ABS ...

  3. MySQL讲义第 35 讲——select 查询之正则表达式

    MySQL讲义第 35 讲--select 查询之正则表达式 文章目录 MySQL讲义第 35 讲--select 查询之正则表达式 一.正则表达式匹配规则 二.数据准备 三.查询包含某些字符的字段信 ...

  4. MySQL讲义第 41 讲——select 查询之函数(4):流程控制函数

    MySQL讲义第41讲--select 查询之函数(4):流程控制函数 文章目录 MySQL讲义第41讲--select 查询之函数(4):流程控制函数 一.数据准备 二.MySQL 流程控制函数介绍 ...

  5. MySQL讲义第 33 讲——select 查询之静态交叉表查询

    MySQL讲义第 33 讲--select 查询之静态交叉表查询 文章目录 MySQL讲义第 33 讲--select 查询之静态交叉表查询 一.数据准备 二.交叉表的形式 三.静态交叉表的实现 1. ...

  6. MySQL讲义第27讲——select 查询之自连接查询

    MySQL讲义第27讲--select 查询之自连接查询 文章目录 MySQL讲义第27讲--select 查询之自连接查询 一.数据准备 二.对自连接的理解 三.把以上的查询用自连接表示 顾名思义, ...

  7. MySQL讲义第 32 讲——select 查询之 select 语句的执行顺序

    MySQL讲义第 32 讲--select 查询之 select 语句的执行顺序 文章目录 MySQL讲义第 32 讲--select 查询之 select 语句的执行顺序 一.SELECT 语句的语 ...

  8. MySQL讲义第 30 讲——select 查询之子查询

    MySQL讲义第 30 讲--select 查询之子查询 文章目录 MySQL讲义第 30 讲--select 查询之子查询 一.标量子查询 1.查询高于所有员工平均工资的员工信息 2.查询工资比王涛 ...

  9. MySQL讲义第 31 讲—— DML 语句与 select 查询

    MySQL讲义第 31 讲-- DML 语句与 select 查询 文章目录 MySQL讲义第 31 讲-- DML 语句与 select 查询 一. INSERT ... SELECT 语句 二.D ...

最新文章

  1. 再也不买仙剑正版盘了
  2. Android面试收集录12 View测量、布局及绘制原理
  3. bootstrap操作mysql数据库_前后端连接(BootStrap_MySQL_MyEclipse)
  4. 从海天信息化的三起三落领悟CIO的真谛
  5. vue切换菜单时不需要页面刷新_antd vue 刷新保留当前页面路由,保留选中菜单,保留menu选中操作...
  6. linux后台任务结束,linux 中任务的前后台切换和暂停、结束任务的命令
  7. docker mysql8.0挂载_Docker安装MySQL 8.0.17 并挂载数据及配置文件,修改时区
  8. python异常(概念、捕获、传递、抛出)
  9. 全网最详细的下载、安装和使用绘图神器draw.io(drawio),它比visio,processon,wps,亿图图示等更好用,最重要的是它免费
  10. [教程] 基于时间盲注的python3脚本编写
  11. D触发器、D上升沿触发器、T触发器
  12. 传说中的考研神校,考研人数究竟有多高?
  13. 实现点击桌面的一个图标打开多个选择画面
  14. 苹果vs剪辑下载_好用的短视频制作与剪辑APP工具盘点
  15. linux多核cpu 优化,Ubuntu是否针对多核CPU进行了优化?
  16. 复旦计算机课程谁的好,复旦大学计算机研究生导师有哪些
  17. SkyWalking告警
  18. app怎么调用mysql数据_教你如何拿别人APP中的数据
  19. k8s添加pod,k8常用命令,k8s删除pod
  20. MTU、IP MTU 和 MSS 参数详解

热门文章

  1. imx6ull使用mjpg_stream调用摄像头,用opencv在windos进行视频查看
  2. Blender猫咪的头部骨骼绑定【Auto Rig Pro自我摸索0.1版本】
  3. 总结出三种评价目的便于管理干部评价
  4. ORACEL学习笔记
  5. JAVA定时器的使用 多种方法
  6. android实现字体靠右,Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)...
  7. java的 jre是什么_Java中JDK和JRE的区别是什么?它们的作用分别是什么?
  8. 系统困境与软件复杂度:为什么我们的系统会如此复杂?
  9. cubeMX+STM32+Freertos 向队列写结构体
  10. 江浙沪计算机专业学校排名,中国高校TOP100排名出炉,全国211大学考研难度分析...