你我都有的需求
日常的工作中難免有需求分析想把資料庫中的資料匯出來分析,注意只是將資料匯出來,而不是(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
P09 中介軟體不斷接受處理客戶端SQL原始碼解讀05:10
四、白日夢的雲原生-筆記
1、這一次,讓我在百度告訴你,當你請求www.baidu.com時都發生了什麼?
5、玩轉docker容器編排排程 docker-compose、docker-swarm
6、你還不懂Docker容器間網路互聯原理嗎?來白嫖啊...... 建議收藏哦