国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

linux下使用ssh遠程執行命令批量導出數據庫到本地

2019-10-26 18:45:37
字體:
來源:轉載
供稿:網友

前天正在跟前端的同事調試功能。服務器開好,模擬的玩家登錄好,就在倒計時。這時突然運營的同事跑過來說要統計幾個服務器玩家的一些情況,也就是需要從幾個服的數據庫導出部分玩家的數據。好吧,我看了一下時間,11:47。心想,跟前端調試完,去吃個飯再午休一下那就下午再給吧。沒想對方來一句"就導個數據庫而已,要這么久么?",而且還是直接跟我上司說的。我嚓,好吧,我導。可問題來了,平時的統計是由php做的,批量部署這些是由運維做的。服務端完全沒有對應的工具。而且服務器是在阿里云上的,數據庫的用戶是限制了ip段登錄的,我所在的ip沒法登錄的。于是,只好終止調試,切ip,寫sql,然后用navicat手動一個個服務器導出數據到excel。

  事后想想,還是寫個腳本吧,不然以后還是會被坑的。
  從環境來看,數據庫不能直接登錄,沒法直接導出。不過可以由運維提供key通過ssh登錄到遠程服務器再將數據導出到本地。
  先配置ssh通過key登錄服務器。這里略過...

  然后就是通過ssh執行命令。先看一下ssh的幫助文檔:

usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]      [-D [bind_address:]port] [-E log_file] [-e escape_char]      [-F configfile] [-I pkcs11] [-i identity_file]      [-L [bind_address:]port:host:hostport] [-l login_name] [-m mac_spec]      [-O ctl_cmd] [-o option] [-p port]      [-Q cipher | cipher-auth | mac | kex | key]      [-R [bind_address:]port:host:hostport] [-S ctl_path] [-W host:port]      [-w local_tun[:remote_tun]] [user@]hostname [command]

最后一項就是執行指令的。假如遠程服務器地址為180.97.33.108,開啟的ssh端口為998,ssh用戶名為xzc,然后想通過在遠程服務器上執行命令ls,那么腳本應該這么寫:

代碼如下:
ssh xzc@180.97.33.108 -p 998 "ls"

如果ssh的認證key已配置好,那么會把登錄后當前目錄下的文件列出來,當然第一次登錄會提示保存遠程服務器的指紋。現在是要導出數據庫的數據,那么需要把ls命令換成導出數據庫的命令。

代碼如下:
echo "select * from user;" | mysql xzc_db -uxzc -pxzcpwd
#或者
mysql xzc_db -uxzc -pxzcpwd -e "select * from user"

上面兩命令都可以使用數據庫用戶xzc,密碼xzcpwd從數據庫xzc_db打印出user表,使用的是默認的本地數據庫地址localhost,默認的端口。如果不是默認,需要指定。

   登錄OK了,打印也OK了,那么下一步就是導出到文件了。這在bash也就是一個 > 的事。把上面的命令拼起來就是:

代碼如下:
ssh xzc@180.97.33.108 -p 998 'echo "select * from user;" | mysql xzc_db -uxzc -pxzcpwd' > user.txt

這樣就把user表導出來本地的user.txt中了。注意"> user.txt"如果放到 ''里則是在遠程服務器執行,導出的文件在遠程服務器。文件現在也有了,不過是txt,這樣交給運營不太好吧。那就導出excel吧。不過遺憾的是我查了N多資料,也找不到mysql不依賴第三方插件或工具導出原生excel的方法。而navicat導出的可是貨真價實的excel,如果用notepad++之類的文本工具打開是會亂碼的,并且導出的文件不會有編碼問題。幸好如果一個txt以tab分割的話,excel也是能認得出來的。于是把user.txt改名user.xls就可以了。但這樣做的問題是excel會按自己的方式處理內容的。比如把一個很大的數字轉換成科學記數法形式。這些都得手動去處理一下了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 本溪| 凤庆县| 正镶白旗| 皋兰县| 临漳县| 榆林市| 东乡族自治县| 元阳县| 永安市| 遵义市| 固原市| 麻阳| 峨眉山市| 攀枝花市| 龙口市| 神池县| 静宁县| 文安县| 额敏县| 万安县| 金昌市| 南陵县| 河北省| 灵山县| 沙雅县| 壤塘县| 延津县| 开阳县| 山阳县| 抚宁县| 朔州市| 宁波市| 张家港市| 桂林市| 荆门市| 哈尔滨市| 花莲市| 云和县| 樟树市| 嘉鱼县| 堆龙德庆县|