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

本文涉及的产品
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: 你我都会遇到的需求:如何导出MySQL中的数据~ 简单!实用!

你我都有的需求#


日常的工作中难免有需求分析想把数据库中的数据导出来分析,注意只是将数据导出来,而不是(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、数据库中间件视频课程配套文档

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
缓存 NoSQL 关系型数据库
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
|
10月前
|
SQL 人工智能 关系型数据库
如何实现MySQL百万级数据的查询?
本文探讨了在MySQL中对百万级数据进行排序分页查询的优化策略。面对五百万条数据,传统的浅分页和深分页查询效率较低,尤其深分页因偏移量大导致性能显著下降。通过为排序字段添加索引、使用联合索引、手动回表等方法,有效提升了查询速度。最终建议根据业务需求选择合适方案:浅分页可加单列索引,深分页推荐联合索引或子查询优化,同时结合前端传递最后一条数据ID的方式实现高效翻页。
548 0
|
9月前
|
存储 关系型数据库 MySQL
在CentOS 8.x上安装Percona Xtrabackup工具备份MySQL数据步骤。
以上就是在CentOS8.x上通过Perconaxtabbackup工具对Mysql进行高效率、高可靠性、无锁定影响地实现在线快速全量及增加式数据库资料保存与恢复流程。通过以上流程可以有效地将Mysql相关资料按需求完成定期或不定期地保存与灾难恢复需求。
725 10
|
10月前
|
SQL 存储 缓存
MySQL 如何高效可靠处理持久化数据
本文详细解析了 MySQL 的 SQL 执行流程、crash-safe 机制及性能优化策略。内容涵盖连接器、分析器、优化器、执行器与存储引擎的工作原理,深入探讨 redolog 与 binlog 的两阶段提交机制,并分析日志策略、组提交、脏页刷盘等关键性能优化手段,帮助提升数据库稳定性与执行效率。
285 0
|
关系型数据库 MySQL Linux
在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾
以上就是在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾的步骤。这个过程就像是一场接力赛,数据从MySQL数据库中接力棒一样传递到备份文件,再从备份文件传递到其他服务器,最后再传递回MySQL数据库。这样,即使在灾难发生时,我们也可以快速恢复数据,保证业务的正常运行。
570 28
|
存储 SQL 关系型数据库
【YashanDB知识库】MySQL迁移至崖山char类型数据自动补空格问题
**简介**:在MySQL迁移到崖山环境时,若字段类型为char(2),而应用存储的数据仅为'0'或'1',查询时崖山会自动补空格。原因是mysql的sql_mode可能启用了PAD_CHAR_TO_FULL_LENGTH模式,导致保留CHAR类型尾随空格。解决方法是与应用确认数据需求,可将崖山环境中的char类型改为varchar类型以规避补空格问题,适用于所有版本。
|
存储 SQL 缓存
mysql数据引擎有哪些
MySQL 提供了多种存储引擎,每种引擎都有其独特的特点和适用场景。以下是一些常见的 MySQL 存储引擎及其特点:
319 0
|
SQL 关系型数据库 MySQL
【YashanDB知识库】字符集latin1的MySQL中文数据如何迁移到YashanDB
本文探讨了在使用YMP 23.2.1.3迁移MySQL Server字符集为latin1的中文数据至YashanDB时出现乱码的问题。问题根源在于MySQL latin1字符集存放的是实际utf8编码的数据,而YMP尚未支持此类场景。文章提供了两种解决方法:一是通过DBeaver直接迁移表数据;二是将MySQL表数据转换为Insert语句后手动插入YashanDB。同时指出,这两种方法适合单张表迁移,多表迁移可能存在兼容性问题,建议对问题表单独处理。
【YashanDB知识库】字符集latin1的MySQL中文数据如何迁移到YashanDB
|
缓存 NoSQL 关系型数据库
Redis和Mysql如何保证数据⼀致?
1. 先更新Mysql,再更新Redis,如果更新Redis失败,可能仍然不⼀致 2. 先删除Redis缓存数据,再更新Mysql,再次查询的时候在将数据添加到缓存中 这种⽅案能解决1 ⽅案的问题,但是在⾼并发下性能较低,⽽且仍然会出现数据不⼀致的问题,⽐如线程1删除了 Redis缓存数据,正在更新Mysql,此时另外⼀个查询再查询,那么就会把Mysql中⽼数据⼜查到 Redis中 1. 使用MQ异步同步, 保证数据的最终一致性 我们项目中会根据业务情况 , 使用不同的方案来解决Redis和Mysql的一致性问题 : 1. 对于一些一致性要求不高的场景 , 不做处理例如 : 用户行为数据 ,
|
SQL 关系型数据库 MySQL
基于SQL Server / MySQL进行百万条数据过滤优化方案
对百万级别数据进行高效过滤查询,需要综合使用索引、查询优化、表分区、统计信息和视图等技术手段。通过合理的数据库设计和查询优化,可以显著提升查询性能,确保系统的高效稳定运行。
840 9

推荐镜像

更多