一个任务:从数据库中读取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
网友评论