一個(gè)任務(wù):從數(shù)據(jù)庫(kù)中讀取50行數(shù)據(jù)杏愤,要求某列不能重復(fù),把結(jié)果保存到本地文件中已脓。
首先看SQL怎么寫(xiě)珊楼。
show full fields from table; # 查看表結(jié)構(gòu)和注釋
show create table new_apk_diff_info \G; # 查看create table語(yǔ)句
select * from a where id in ( select max(id) from a group by name limit 50 ) #寫(xiě)法啰嗦,而且有子查詢(xún)
selet * from a group by name limit 50; # 簡(jiǎn)單寫(xiě)法
如果不能寫(xiě)出SQL度液,只能查出大量數(shù)據(jù)厕宗,然后去重。問(wèn)題來(lái)了堕担,怎樣根據(jù)某一列去重呢已慢?
sort -t ',' -k 1,1 -u file -t 指定分隔符, -k表示去重的列霹购,表示根據(jù)第一列去重
sort -k1,3 -u file 根據(jù)1,2,3列去重
sort -k1,1 -k3,3 -u diff.txt 根據(jù)第一列和第三列去重
接下來(lái)遇到的問(wèn)題:怎樣把MySQL查詢(xún)結(jié)果佑惠,到處到服務(wù)器文件呢?
客戶(hù)端方式 mysql> select count(1) from table into outfile '/tmp/test.xls';
命令行方式 mysql -h 127.0.0.1 -u root -p XXXX -P 3306 -e "select * from table" > /tmp/test/txt (自己太粗心了齐疙,-e沒(méi)有看見(jiàn))
最后的問(wèn)題膜楷,怎樣把文件從服務(wù)器上傳輸?shù)奖镜啬兀?br>
以前用過(guò)sz / rz 命令,但那是windows
試了試scp file root@192.168.1.147:/home/mi 贞奋,不好使:ssh: connect to host 10.235.144.249 port 22: Connection refused
幸好想起nc
接收端:nc -l -p 8210 > demo.txt
發(fā)送端:nc dest_ip 8210 < demo.txt