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

2022/2/4 19:15:32

本文主要是介绍你我都会遇到的需求:如何导出MySQL中的数据~ 简单!实用!,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

目录
  • 你我都有的需求
  • 方式一:tee
  • 方式二:mysql_use_result
  • 推荐阅读

你我都有的需求

日常的工作中难免有需求分析想把数据库中的数据导出来分析,注意只是将数据导出来,而不是(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分钟......

42、视频串讲:基于bin-log&position搭建主从架构MySQL --建议收藏哦~

43、视频串讲:基于GTID搭建主从架构MySQL --建议收藏哦~

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



这篇关于你我都会遇到的需求:如何导出MySQL中的数据~ 简单!实用!的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程