Linux读取数据库且将结果导出到CSV,并作为附件发送,可用如下办法实现
#! /bin/bash
export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"
v_user="a"
v_password="b"
v_orcl_service_name="c"
v_pkg_owner="d"
attachment=/home/infa/tmp/check_result.csv
str_batchno=`sqlplus -S $v_user/$v_password@$v_orcl_service_name <<EOF
set pagesize 0;
select t.para_value
from $v_pkg_owner.table_a t;
exit;
EOF`
echo 'TABLE_NAME,CHECK_TYPE,CHECK_RULE,CHECK_RESULT,CHECK_RESULT_DESC,CHECK_COUNT,BATCH_NUM,CHECK_TIME,'>$attachment
str_result=`sqlplus -S $v_user/$v_password@$v_orcl_service_name >>$attachment <<EOF
set pagesize 0
set feedback off
set heading off
set linesize 1000;
select t.table_name || ',' || t.check_type || ',' || t.check_rule || ',' || t.check_result || ',' || t.check_result_desc || ',' || t.check_count || ',' || to_char(t.batch_num) || ',' || t.check_time
from table_b t
where t.batch_num = $str_batchno
order by t.check_count
;
exit;
EOF`
iconv -f utf8 -t gbk $attachment -o $attachment
mail_subject="Test"
mail_reveiver_list="jason@163.com"
mail_cc_list="jason@126.com"
mail_message="Dear ,
Test
Thanks!
"
echo "$mail_message" | mailx \
-a ${attachment} \
-s "$mail_subject" -c $mail_cc_list $mail_reveiver_list