你我都有的需求
日常的工作中難免有需求分析想把數據庫中的數據導出來分析,注意只是將數據導出來,而不是(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容器間網絡互聯原理嗎?來白嫖啊...... 建議收藏哦