工具:csvkit
文档:http://csvkit.rtfd.org/
注:目前中文支持一般
其他文件转csv
in2csv some.xls > some.csv
curl https://api.github.com/repos/onyxfish/csvkit/issues?state=open | in2csv -f json -v > issues.csv
查询数据库,结果写入csv(sql2csv有bug,含中文的数据导不出来)
sql2csv --db "mysql://someusr:somepwd@localhost/somedb" --query "select * from sometable"
对csv文件执行sql查询
cat some_has_header.csv |csvsql --query 'select id,count(*) from stdin group by id'
cat some_no_header.csv |header -a id,name,time|csvsql --query 'select id,count(*) from stdin group by id'
清理csv中的错误行
csvclean some.csv
从csv中提取指定列
csvcut -c 1,3 some.csv
csvcut -c name,birthday some.csv
为csv各行添加行号
csvcut -l some.csv
从csv提取指定行(目前有bug,中文字符会失败,需要手动加setdefaultencoding部分绕过,见 issue-359)
csvgrep -c 1 -m "I" examples/realdata/FY09_EDU_Recipients_by_State.csv
csvgrep -c 1 -r "^I" examples/realdata/FY09_EDU_Recipients_by_State.csv
指定列,连接两个csv,连接方式默认为inner,还可指定outer/left/right等
csvjoin -c "column_a,column_b" --outer file1.csv file2.csv
行排序
csvsort -c "column_a" -r a.csv
为不同源文件添加列标识,然后合并到一起
在wine-{red,white}-clean.csv数据添加一个新列type,分别取值为red,white
csvstack -g red,white -n type wine-{red,white}-clean.csv
变换列分隔符为 "|"
csvformat -D "|" some.csv
变换行分隔符为 ";"
csvformat -M ";" some.csv
csv转成json,-i 表示缩进
csvjson -k "some_column" -i 4 some.csv
命令行查看csv
csvlook some.csv
根据csv生成sql创建table的指令
csvsql -i mysql some.csv
对csv执行sql
csvsql --query "select b.id,b.book,group_concat(a.tag) as taglist from a join b on a.id=b.id group by b.id" a.csv b.csv
对指定列做简单统计,例如min/max/sum/mean/median等等
csvstat -c 4 --freq some.csv
没有评论:
发表评论