在实际应用中,大家一定碰到需要将数据库内的数据进行汇出的情况,下面我就自己经验进行相应的总结。主要时间一久怕自己会忘记,希望可以记录一下,以便后续自己查询,同时也希望可以帮助到有需要的人。

當需要對于MySQL數據庫中的某个表格進行導出時需要做些動作

1.首先進入到你的mysql數據庫中執行指令

例如:

方法一:

外網數據庫中的表格要經過查詢等動作后,将查询結果進行匯出動作


因為我这个外網數據庫是安裝在172.16.22.7的docker內,故要先進入docker内去執行操作语句,当然如果你在docker外安装了MySQL的客户端的话,就可以直接在机器内进行相应操作。


首先进入到172.16.22.7后執行下列語句

 1.docker exec -it compassionate_sinoussi bash 

#上述compassionate_sinoussi是我的容器名称

 2.mysql -u t  -p erico998  zgz 

#进入到我的数据库,参数说明:  -u 用户名  -p  用户密码     数据库名


稍後執行查詢指令(其中outfile 就是匯出數據至指定路徑)

 3.mysql[zgz]>select a.f_info_id as info_id , a.f_diggs as info_diggs , 

 a.f_reprints as info_reprints,b.f_diggs as buffer_diggs, 

 b.f_reprints as buffer_reprints from cms_info a, 

 cms_info_buffer b where a.f_info_id = b.f_info_id 

 order by info_id asc into outfile '/tmp/aa.txt';

 

 在查詢后發現/tmp/aa.txt是不存在的,需要進行查找

 4.find / -name aa.txt

 發現aa.txt在tmp的內嵌文件中,故后续操作时,我们無需再增加路徑,直接填写文件名便可在tmp中生成

 

 接下來要考慮怎麼把容器內部數據傳輸到172.16.22.7主機

 5.docker cp container_id:/a.txt  /a.txt

 

 如果你需要远程传输文件到另外一台机器的话,如從172.16.22.7傳輸到172.16.2.1,按下列语句操作即可:

 6.scp aa.txt root@172.16.22.1:/data0/


 通過上述動作即可將數據庫需要的查詢結果匯出到需要此数据的人员手中了


方法二:

 數據庫资料匯出成excel格式:

 直接在172.16.22.7 中執行語句即可

 echo "use 数据库名; 需操作的sql語句" | mysql -h 容器IP -u用户 -p用户密码> 存放数据的路径及名称

 如:echo "use zgz; select a.f_info_id as info_id , a.f_diggs as info_diggs , 

 a.f_reprints as info_reprints,b.f_diggs as buffer_diggs, 

 b.f_reprints as buffer_reprints from cms_info a, 

 cms_info_buffer b where a.f_info_id = b.f_info_id 

 order by info_id asc" | mysql -h 172.17.0.1 -ut -perico998 > /data0/test.xls


 同样服务器间远程传输文件,如:從172.16.22.7傳送到172.16.22.1

 scp test.txt root@172.16.22.1:/data0/

 

但因為我的mysql是utf8格式直接導出的,所以在excel打開時會出現亂碼。若直接把excel從回傳到你自己的办公电脑后,使用notepad打開,然後再將數據内容複製黏貼到新增的excel表格即可。