方案有不少种,我这里简单说一下:mysql
1 SELECT * FROM mytable 2 INTO OUTFILE '/tmp/mytable.csv' 3 FIELDS TERMINATED BY ',' 4 OPTIONALLY ENCLOSED BY '"' 5 LINES TERMINATED BY '\n';
在我使用过程当中发现一个特别严重问题,这里面不能插入查询条件,好比where这些,也就是说只能整表导出,不知道是否是个人写法有问题,有知道朋友请给我留言。sql
第二个问题是,outfile的路径必定要有写权限,咱们mysql的进程权限通常是mysql用户,所以最好导出到/tmp目录下面。bash
mysql -uroot test -e "select ip from server where a.name like '%abc%'" -N -s | sed -e 's/^/"/g;s/$/"\n/g'; > /tmp/test.csv
这里首先使用mysql命令的-e参数来执行sql语句,而后经过-N来去掉输出结果中列名,-s去掉输出结果中的各类划线。spa
而后使用sed命令输出结果中全部相关数据进行替换,其中替换了三处,1.在行首增长“,在行尾增长”和换行,在每一个字段之间增长”,”来分隔。code
mysqldump -u username -p -t -T/path/to/directory dbname table_name --fields-terminated-by=','
和1的方案差很少吧。server
就当是一个笔记吧blog