指定SQL文本导出CSV文件

此下脚本是较灵活的卸数脚本,需指定表名、卸数路径、卸数的SQL文本(cat export_csv.sh)
**#!/usr/bin/sh
#功能:指定表导出含有字段title的CSV文件(编码GBK)
#调用方法:sh export_csv.sh TABLENAME PATH
#导出的CSV文件路径: $WORKDIR/data/$TABLENAME.csv
#编写一个须要卸数的SQL脚本**
TABLENAME=\$1
WORKDIR=\$2
SQL=cat $WORKDIR/${TABLENAME}.sql #注释:须要导出表的SQL语句。例如:导出表event此SQL文本为:SELECT * FROM ENENTmysql

######此段是将打印表的字段TITILE###########################
mysql -uroot -p123456 zhongda << EOF
select case when ordinal_position=1 then concat(“SELECT “”“,column_name,”“”“)
else concat(“,”“”,column_name,”“”“) #假设字段name就拼 ,”name”
end as columnname
from information_schema.columns
where table_name=’$TABLENAME’ ORDER BY ordinal_position
into outfile ‘$WORKDIR/${TABLENAME}.txt’
EOFweb

#######此段是卸出含有表头的CSV文件##############
mysql -uroot -p123456 zhongda << EOF
select * from (
cat $WORKDIR/${TABLENAME}.txt
union all
$SQL
) b
into outfile ‘$WORKDIR/data/${TABLENAME}.csv’
CHARACTER SET GBK
fields terminated by ‘,’ optionally enclosed by ‘”’
lines terminated by ‘\r\n’ ;
EOFsql