你我都有的需求#
日常的工作中难免有需求分析想把数据库中的数据导出来分析,注意只是将数据导出来,而不是(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、数据库面经,常见的面试题....
6、能谈谈year、date、datetime、time、timestamp的区别吗?
10、了解Flush-List吗?顺便说一下脏页的落盘机制!
11、用 11 张图讲清楚,当你CRUD时BufferPool中发生了什么!以及BufferPool的优化!
16、简述undo log、truncate、以及undo log如何帮你回滚事务?
19、LSN、Checkpoint?谈谈MYSQL的崩溃恢复是怎么回事!
20、MySQL的 bin log有啥用?在哪里?谁写的?怎么配置?
21、bin log有哪些格式?有啥区别?优缺点?线上用哪种格式?
24、自导自演的数据库面试现场--谈谈MySQL的10种文件
25、大型面试现场:一条update sql的执行都经历了什么?
26、大型翻车现场:如何实现记录存在的话就更新,如果记录不存在的话就插入。
28、面试现场:说说char和varchar的区别你了解多少?
29、沙尘暴也阻挡不了学习的脚步-- 面试官:你竟然不知道MySQL的组提交?
30、聊聊MySQL大insert buffer和change buffer吧!
39、白日梦的Golang的SQL连接池源码梳理笔记,建议先收藏,再阅读哦~
40、面试被问如何排查慢查询(执行计划)怎么办?愣着干嘛?进来白嫖呀!
41、简单实用:了解后端如何存储表情包,只需3分钟......
连载中~,还有15篇文章,公众号第一时间发布~
二、MySQL-视频#
P02 视频+图文串讲: MySQL行锁、Gap锁、Next-Key-Lock实战23:07
三、进阶MySQL中间件-视频#
P03 基于binlog+postion搭建MYSQL集群原理及实战17:47
P08 MySQL协议-Handshake!和中间件握手机制原理11:46
四、白日梦的云原生-笔记#
1、这一次,让我在百度告诉你,当你请求www.baidu.com时都发生了什么?
5、玩转docker容器编排调度 docker-compose、docker-swarm
6、你还不懂Docker容器间网络互联原理吗?来白嫖啊...... 建议收藏哦