你在这里

如何快速的导出复杂查询条件的数据

0
Vote up!

如果是简单的查询条件,一般的MySQL客户端,尤其是我经常用的Navicat就可以胜任了,但是我遇到的问题是,公司其他部门要的数据的查询语句比较复杂,执行时间非常长,是个慢查询,里面有多表JOIN,有聚合运算,百万数量级的数据,这里不导论更换成Hadoop或者MongoDB等高端话题,就是如何能快速的把数据导出来。

首选方案,使用Navicat客户端,通过SQL语句查询,用自带的导出功能导出,因为超时问题已经变得不可用了,备选方案是通过写脚本简化查询,不过由于数据要的非常急,所以也pass了这个方案,最后,采用了一个比较巧妙的方式,很快的解决了问题。

背景:系统由Drupal构建,环境中有Drush。

需要保存成一个Shell脚本,这里只是主体部分,我是在Jenkins里运行的。
BASH:
webroot="Drupal路径"
cd $webroot

mysql_conn="`drush -r $webroot sql-connect` -BNe "

query="一个很慢的SQL语句。"

$mysql_conn "$query" | while read line; do echo $line >> /tmp/data.csv;
done