实战(一)

一个任务:从数据库中读取50行数据,要求某列不能重复,把结果保存到本地文件中。
首先看SQL怎么写。

show full fields from table;    # 查看表结构和注释
show create table new_apk_diff_info \G;   # 查看create table语句

select * from a where id in (   select max(id) from a group by name  limit 50   )  #写法啰嗦,而且有子查询

selet * from  a  group by name limit 50; # 简单写法

如果不能写出SQL,只能查出大量数据,然后去重。问题来了,怎样根据某一列去重呢?

sort -t ','  -k 1,1 -u   file     -t 指定分隔符, -k表示去重的列,表示根据第一列去重
sort  -k1,3 -u file   根据1,2,3列去重 
sort  -k1,1  -k3,3  -u diff.txt   根据第一列和第三列去重

接下来遇到的问题:怎样把MySQL查询结果,到处到服务器文件呢?
客户端方式 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没有看见)

最后的问题,怎样把文件从服务器上传输到本地呢?
以前用过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
发送端:nc dest_ip 8210 < demo.txt

参考:两台Linux系统之间传输文件的几种方法