你我都有的需求

日常的工作中难免有需求分析想把数据库中的数据导出来分析,注意只是将数据导出来,而不是(dump)备份数据库

那本文就跟大家介绍我常用的两种方式,如下:

方式一:tee

tee的功能是把你与MySQL-Server之间的交互记录都记录到你指定的文件中去。

看下的案例:

Step1:按如下的方式同MySQL交互

// tee命令执行之后,你与MySQL之间的所有交流都会被记录到指定的文件中。
mysql> tee /root/res.txt
Logging to file '/root/res.txt' mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| runoob_tbl |
+----------------+
1 row in set (0.00 sec) mysql> select * from runoob_tbl;
+-----------+-----------------------+-----------------------+-----------------+
| runoob_id | runoob_title | runoob_author | submission_date |
+-----------+-----------------------+-----------------------+-----------------+
| 3 | 欢迎微信搜索: | 风一样的程序员 | 2021-11-18 |
+-----------+-----------------------+-----------------------+-----------------+
1 row in set (0.00 sec)

Step2:退出连接,然后去查看机器上的/etc/root/res.txt

方式二:mysql_use_result

第二种方式如下,在登录MySQL时指定好用哪个数据库和要执行的SQL语句,并将SQL的执行结果一股脑重定向到你指定的文件中。

还是上面的例子,对应的命令如下:

mysql -h 127.0.0.1
-P ${端口}
-p ${密码}
-u ${用户名}
-D ${数据库名}
-e"select * from runoob_tbl;" > ./info_100w &

执行完之后,查看结果文件:

这时候有个风险:如果你的SQL要捞出的数据量动辄几十几百G,或者TB级别,且依然使用上面的方式拉数据的话,就极有可能打爆内存。因为默认如上的情况中(使用的是mysql_store_result模式),MySQL是把你查到的数据全部加载进内存,再一股脑返回给你。

解决的方式:添加--quick参数

mysql -h 127.0.0.1
-P ${端口}
-p ${密码}
-u ${用户名}
-D ${数据库名}
--quick
-e"select * from runoob_tbl;" > ./info_100w &

使用这个参数后会开启mysql_use_result模式,MySQL每读到一行数据,就会立刻将这行数据返回给客户端,虽然交互的次数多了点,但是直接解决掉客户端内存消耗问题。图片

学废了没?


推荐阅读

一、给研发同学看的面试指南

1、MySQL的修仙之路,图文谈谈如何学MySQL、如何进阶!

2、数据库面经,常见的面试题....

3、谈谈MySQL中基数是什么?

4、聊聊什么是慢查?如何监控?如何排查?

5、对Not Null字段插入Null值有啥现象?

6、能谈谈year、date、datetime、time、timestamp的区别吗?

7、你有没有搞混查询缓存和Buffer Pool?谈谈看!

8、你知道数据库缓冲池中的LRU-List吗?

9、了解InnoDB的FreeList吗?谈谈看!

10、了解Flush-List吗?顺便说一下脏页的落盘机制!

11、用 11 张图讲清楚,当你CRUD时BufferPool中发生了什么!以及BufferPool的优化!

12、了解 MySQL的表空间 和 数据表吗?谈谈看!

13、了解 MySQL的数据行吗?行溢出机制呢?谈谈看!

14、了解MySQL数据页吗?说说什么是页分裂吧!

15、用一分钟了解fsync这个系统调用

16、简述undo log、truncate、以及undo log如何帮你回滚事务?

17、我劝!这位年轻人不讲MVCC,耗子尾汁!

18、传说中的MySQL的redo log是什么?谈谈看!

19、LSN、Checkpoint?谈谈MYSQL的崩溃恢复是怎么回事!

20、MySQL的 bin log有啥用?在哪里?谁写的?怎么配置?

21、bin log有哪些格式?有啥区别?优缺点?线上用哪种格式?

22、删库后!除了跑路还能干嘛?

23、全网最牛X的!MySQL两阶段提交串讲!没有之一!

24、自导自演的数据库面试现场--谈谈MySQL的10种文件

25、大型面试现场:一条update sql的执行都经历了什么?

26、大型翻车现场:如何实现记录存在的话就更新,如果记录不存在的话就插入。

27、如何实现记录存在的话就更新,如果记录不存在的话就插入

28、面试现场:说说char和varchar的区别你了解多少?

29、沙尘暴也阻挡不了学习的脚步-- 面试官:你竟然不知道MySQL的组提交?

30、聊聊MySQL大insert buffer和change buffer吧

31、一看就懂的MySQL的double write

32、简述3大范式

33、各种登陆MySQL的方式

34、join联表的注意点、有哪些联表查询方式

35、心里有点树

36、心里有点B树

37、B+Tree到底是怎么回事?如何长高的?

38、8分钟回顾MySQL常见的索引

39、白日梦的Golang的SQL连接池源码梳理笔记,建议先收藏,再阅读哦~

40、面试被问如何排查慢查询(执行计划)怎么办?愣着干嘛?进来白嫖呀!

41、简单实用:了解后端如何存储表情包,只需3分钟......

连载中~,还有15篇文章,公众号第一时间发布~

二、MySQL-视频

P01 如何学MySQL16:01

P02 视频+图文串讲: MySQL行锁、Gap锁、Next-Key-Lock实战23:07

三、进阶MySQL中间件-视频

P01 开场白-关于白日梦和本套视频的介绍04:34

P02 单机安装MySQL实践06:09

P03 基于binlog+postion搭建MYSQL集群原理及实战17:47

P04 基于gtid搭建MYSQL集群原理及实战13:34

P05 中间件的介绍及使用09:58

P06 源码解析中间件启动流程22:46

P07 源码解析中间件的权限校验原理03:47

P08 MySQL协议-Handshake!和中间件握手机制原理11:46

P09 中间件不断接受处理客户端SQL源码解读05:10

P10 中间件是如何转发执行你的SQL语句的?13:53

P11 中间的读写分离实现原理源码解读08:22

P12 白日梦寄语02:33

P13 数据库中间件视频课程配套文档

四、白日梦的云原生-笔记

1、这一次,让我在百度告诉你,当你请求www.baidu.com时都发生了什么?

2、白日梦的DNS笔记

3、白日梦的网络笔记:iptables、防火墙

4、放点存货:白日梦的Docker网络笔记

5、玩转docker容器编排调度 docker-compose、docker-swarm

6、你还不懂Docker容器间网络互联原理吗?来白嫖啊...... 建议收藏哦

五、白日梦的云原生-视频

P01 二十分钟彻底搞懂Docker网络!21:46

p02 终于有人讲明白了iptables和docker网络!21:42

44、数据库中间件视频课程配套文档

你我都会遇到的需求:如何导出MySQL中的数据~ 简单!实用!的更多相关文章

  1. jsp+servlet+poi导出数据库中的数据

    index.jsp: <a href="POIout">简单导出数据</a> <a href="POIoutTemplate"&g ...

  2. PHP如何批量更新MYSQL中的数据

    最近项目需要用到批量更新数据库里的数据,在网上找了一下这方面的例子,觉得这个还不错,分享给大家. 在这个业务里里面涉及到了更新两张数据表,那么大家是不是会想到非常简单,马上上代码 $sql ,type ...

  3. PHP批量更新MYSQL中的数据

    原文链接:https://blog.csdn.net/wuming19900801/article/details/62893429 $sql = "update newhouse_clic ...

  4. C#读取Excel表格数据到DataGridView中和导出DataGridView中的数据到Excel

    其实想在datagridview中显示excel表格中的数据跟读取数据库中的数据没什么差别,只不过是创建数据库连接的时候连接字段稍有差别. private void btnShow_Click(obj ...

  5. Java利用POI导入导出Excel中的数据

         首先谈一下今天发生的一件开心的事,本着一颗android的心我被分配到了PB组,身在曹营心在汉啊!好吧,今天要记录和分享的是Java利用POI导入导出Excel中的数据.下面POI包的下载地 ...

  6. Vusual C++连接Mysql和从MySql中取出数据的API介绍

    .1 mysql_real_connect() 2.1.1 函数原型: MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const ...

  7. 用python批量向数据库(MySQL)中导入数据

    用python批量向数据库(MySQL)中导入数据 现有数十万条数据,如下的经过打乱处理过的数据进行导入 数据库内部的表格的数据格式如下与下面的表格结构相同 Current database: pyt ...

  8. hadoop项目实战--ETL--(二)实现自动向mysql中添加数据

    四 项目开发 1 创建数据库db_etl,新建两张表user 和oder.表结构如第一部分图所示. 2 编写python脚本,实现自动向mysql中插入数据. 新建python 项目,目录结构如下图 ...

  9. PHP读取mysql中的数据

    <!DOCTYPE HTML> <html> <head> <title> PHP动态读取mysql中的数据 </title> <me ...

随机推荐

  1. Glossary Collection

    目录 直接修饰用 间接强调用 (多为副词) 过渡用 特别的名词 动词 词组 各种介词 句子 摘要 引言 总结 正文 实验 直接修饰用 Word 含义 例句 近义词 nuanced adj. 微妙的:具 ...

  2. uniCloud爬虫获取网页数据

    'use strict'; let request = require('request') let cheerio = require('cheerio'); //爬虫 let iconv = re ...

  3. 如何下载安装JDBC_jar包,MySQL_JDBC_jar包的下载与使用(Windows)

    一. 下载 (1) 打开MySQL_JDBC的下载网站:https://dev.mysql.com/downloads/connector/j/ (2) 选择操作系统:Platform Indepen ...

  4. maven dependency全局排除

    http://www.voidcn.com/article/p-zychsdnd-bqg.html 个人比较喜欢log4j.properties这种配置文件,而springboot默认使用logbac ...

  5. 使用sudo执行命令提示command not found

    笔记: 使用源码部署nginx的时候,使用sudo nginx提示command not found,但是直接使用nginx会导致权限问题: 这种情况应该是环境变量导致的,使用 env |grep P ...

  6. CSS基础 装饰 元素本身隐藏和显示效果及案例

    1.visibility:hidden; 2.display: none: 区别: 1.visibility:hidden 隐藏元素本身,且在网页中 占位置 2.display:none; 隐藏元素本 ...

  7. vsconde launch.json配置 调试本地文件

    { // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing ...

  8. 分别使用time 和 datetime模块记录当前时间

    工作中经常混淆这两种方法 现记录一下 加深印象 代码如下: >>> import time>>> import datetime>>> ct1 = ...

  9. MySQL_事务(四大特性)

    本文转载:https://www.cnblogs.com/kismetv/p/10331633.html 事务是MySQL等关系型数据库区别于NoSQL的重要方面,是保证数据一致性的重要手段.本文将首 ...

  10. SQL server - if else 与 else if 的正确使用

    两层判断 if a>2 begin print 'a大于2' end else begin print 'a小于等于2' end 注意了  begin - end 之间的代码块不允许空,必须有指 ...