你我都會遇到的需求:如何導出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、資料庫面經,常見的面試題
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有哪些格式?有啥區別?優缺點?線上用哪種格式?
25、大型面試現場:一條update sql的執行都經歷了什麼?
26、大型翻車現場:如何實現記錄存在的話就更新,如果記錄不存在的話就插入。
27、如何實現記錄存在的話就更新,如果記錄不存在的話就插入–續
28、面試現場:說說char和varchar的區別你了解多少?
29、沙塵暴也阻擋不了學習的腳步– 面試官:你竟然不知道MySQL的組提交?
30、聊聊MySQL大insert buffer和change buffer吧!
39、白日夢的Golang的SQL連接池源碼梳理筆記,建議先收藏,再閱讀哦~
40、面試被問如何排查慢查詢(執行計劃)怎麼辦?愣著幹嘛?進來白嫖呀!
42、影片串講:基於bin-log&position搭建主從架構MySQL –建議收藏哦~
43、影片串講:基於GTID搭建主從架構MySQL –建議收藏哦~