1. 程式人生 > 其它 >你我都會遇到的需求:如何匯出MySQL中的資料~ 簡單!實用!

你我都會遇到的需求:如何匯出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分鐘......

42、視訊串講:基於bin-log&position搭建主從架構MySQL --建議收藏哦~

43、視訊串講:基於GTID搭建主從架構MySQL --建議收藏哦~

44、資料庫中介軟體視訊課程配套文件