Shell脚本调用SQL文格式

1. 定义需要执行的SQL文,以及需要输出文件

OUTFILE=\${DATADIR}/\${FILENAME}

SQLFILE=\${DATADIR}/check_tradedetail.sql

2. 设置需要执行的SQL文

echo -n "

select tr.id || ',' || m.merchant_code || ',' || m.merchant_name || ',' || to_char(tr.trade_start_time, 'yyyy-mm-dd hh24:mi:ss')

|| ',' || tt.name || ',' || tr.bank_code || ',' ||  tr.fld3 || ',' ||

tr.trade_sum || ',' ||

case when tr.status = 0 then '待处理'

when tr.status = 1 then '处理中'

when tr.status = 2 then '成功'

when tr.status = 3 then '失败'

when tr.status = 4 then '待确认' end

from tvpay2.trade_record tr join tvpay2.merchant m on tr.provider_id = m.id

join tvpay2.trade_type tt on tr.trade_code = tt.code

where to_char(tr.fiscal_date, 'yyyyMMdd') = ${date} order by tr.trade_start_time;

" > $SQLFILE

echo -n "
select ''''||a.merchant_code || ',' || a.merchant_name || ',''' || a.id  
|| ','  || (a.balance + nvl(b.acc, 0))  || ','  || (a.withdrawable_balance + nvl(b.acc, 0)) || ',' ||  a.frozen_balance   from
(select tu.merchant_code, tu.merchant_name, a.* from tvpay2.account a join tvpay2.merchant_account_association ua
on a.id = ua.account_id join tvpay2.merchant tu on ua.merchant_id = tu.id ) a
left join
(select v.account_id, sum(v.credited - v.debited) as acc from tvpay2.voucher v  
where v.create_time <= to_date('\$input_datetime', 'yyyymmdd hh24:mi:ss') group by v.account_id)  b
on a.id = b.account_id where a.balance + nvl(b.acc, 0) > 0;
" > \$SQLFILE1

#备注 ||表示分隔符  ‘,’用于分隔字段使用 其中‘’‘’为了在第一个字段中添加'号,另外‘、'\"’可以添加“号,这个可以用来解决文本文件,转换成csv格式时,数字错乱问题。

3. 输出文件格式设置及其执行SQL文

##set colsep' ';        //域输出分隔符

##set numwidth 25 ;     //输出number类型域长度,缺省为10

##set linesize 300;     //输出一行字符个数,缺省为80

##set pagesize 0;       //输出每页行数,缺省为24,为了避免分页,可设定为0,设为0后无域标题。

##set echo off;                //显示start启动的脚本中的每个sql命令,缺省为on

##set newpage none;          //页与页之间的分隔符

##set termout off;      //显示脚本中的命令的执行结果,缺省为on

##set trimout on;              //去除标准输出每行的拖尾空格,缺省为off

##set trimspool on;     //去除重定向(spool)输出每行的拖尾空格,缺省为off

##set serveroutput on;  //设置允许显示输出类似dbms_output

##set timing on;        //设置显示“已用时间:XXXX”

##set verify off;       //可以关闭和打开提示确认信息old 1和new 1的显示.

##set heading off;    //输出域标题,缺省为on

##set feedback off;     //回显本次sql命令处理的记录条数,缺省为on

##alter session set nls_date_format='YYYY-MM-DD_HH24:MI:SS';

sqlplus /nolog <<!

conn user/password@ORCL

set numwidth 25

set linesize 300

set pagesize 0

set echo off

set heading off

set newpage none

set termout off

set trimout on

set trimspool on

set serveroutput off

set timing off

set verify off

set feedback off

spool ${OUTFILE};

@${SQLFILE};

spool off;

!

4.格式化输出文件

sed -i '/SQL/d' \$OUTFILE1
sed -i '/---/d' \$OUTFILE1
sed -i 's/\ \ //g' \$OUTFILE1
sed -i '/^\$/d' \$OUTFILE1

5.将文本格式转换为csv格式

iconv -f "utf-8" -t "gbk" \${OUTFILE1} > OUTFILE1.csv

Shell脚本调用SQL文格式的更多相关文章

  1. 基于sparksql调用shell脚本运行SQL

    [Author]: kwu 基于sparksql调用shell脚本运行SQL,sparksql提供了类似hive中的 -e  , -f ,-i的选项 1.定时调用脚本 #!/bin/sh # uplo ...

  2. shell脚本调用spark-sql

    为了更方便的查询并产生报表, 需要使用shell脚本调用spark-sql spark/bin/spark-sql --master spark://host:7077 -f ${SQL_FILE} ...

  3. shell脚本调用C语言之字符串切分之strtok函数

    今天上午在写一个需求,要求的比较急,要求当天完成,我大致分析了一下,可以采用从shell脚本中插入一连串的日期,通过调用proc生成的可执行文件,将日期传入后台数据库,在数据库中进行计算.需要切分日期 ...

  4. shell脚本调用C语言之字符串切分函数——strtok

    今天上午在写一个需求,要求的比较急,要求当天完成,我大致分析了一下,可以采用从shell脚本中插入一连串的日期,通过调用proc生成的可执行文件,将日期传入后台数据库,在数据库中进行计算.需要切分日期 ...

  5. Shell脚本调用ftp上传文件

    Shell脚本调用ftp上传文件 1.脚本如下 ftp -n<<! open x.x.x.x ###x.x.x.x为ftp地址 user username password ###user ...

  6. Miniconda 安装 & Pip module 安装 & Shell 脚本调用 Miniconda 虚拟环境手册(实战项目应用)

    (实战项目应用) 1. 下载Miniconda 两个安装方式: 方式1:wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Min ...

  7. MySql创建函数与过程,触发器, shell脚本与sql的相互调用。

    一:函数 1:创建数据库和表deptartment, mysql> use DBSC; Database changed mysql), ), )); Query OK, rows affect ...

  8. linux下crontab定时执行shell脚本调用oracle 存储过程

    问题:脚本内调用存储过程,脚本直接执行没问题,使用crontab 执行脚本存储过程未执行 原因:缺少oracle环境变量 解决:在shell脚本里添加oracle的环境变量 #!/bin/sh PAT ...

  9. shell脚本调用python脚本的路径问题

    脚本的相互调用中,只有在同一级目录下才可以使用__file__参数去获取路径名,(在shell里使用pwd也同样),否则,使用的就是主文件(最开始运行的脚本程序)的所在位置,是错误路径:一定要注意当期 ...

随机推荐

  1. AndroidStudio给Unity打jar包

    环境: AndroidStudio2.0 Unity4.68 AS打jar包 新建空工程 删除无用的MainActivity等. 新建Module Module选择Android Library,起名 ...

  2. 慕课笔记-Java入门第一季

    [初步复习Java编程基础,记录知识盲点和遗漏点] 1.switch语法 switch(表达式){ case 值1: 执行代码块1; break; case 值2: 执行代码块12; break; c ...

  3. PostgreSQL - pgAdmin4远程连接数据库

    前言 PostgreSQL在安装的时候自带的pgAdmin这个可视化工具,自从将PostgreSQL9升级到了10版本后,自带的pgAdmin也从3升级到了4版本.pgAdmin4的变化非常巨大,刚接 ...

  4. bzoj 2441 [中山市选2011]小W的问题

    bzoj 2441 [中山市选2011]小W的问题 Description 有一天,小W找了一个笛卡尔坐标系,并在上面选取了N个整点.他发现通过这些整点能够画出很多个"W"出来.具 ...

  5. B.选点

    链接:https://ac.nowcoder.com/acm/contest/368/B 题意: 有一棵n个节点的二叉树,1为根节点,每个节点有一个值wi.现在要选出尽量多的点. 对于任意一棵子树,都 ...

  6. Centos 7 在Hyper-v中安装完成后,提示密码错误

    如果提示密码错误,可能是由于密码首字母采用了大些,而caps lock似乎不能识别,因此,在需要输入大写字母的时候,按住shift即可.

  7. 【aspnetcore】让aspnetcore支持less文件

    第一步:新建文件 CustomerFileExtensionContentTypeProvider namespace xxx { public class CustomerFileExtension ...

  8. clearfix的运行机制和进化

    话说为什么要把这个记下来,因为昨天去面试,问了clearfix的原理,当时脑子不清晰,回答得真是想要咬舌自尽.遂,决定,要搞清楚来龙去脉~~~(资料来自网上博主们,)http://www.aseoe. ...

  9. Java微信公众平台开发(八)--多媒体消息回复之音乐

    我们上一篇写了关注出发图片的回复.想着在发送一次音乐,最后基于回复消息分类情况下,实现一个简单的只能话回复.先附一张大致效果图. 下面我们进入代码阶段. (一)修改消息转发器MsgDispatcher ...

  10. 通用全局CSS样式

    PC全局样式 *{padding:0;margin:0;} div,dl,dt,dd,form,h1,h2,h3,h4,h5,h6,img,ol,ul,li,table,th,td,p,span,a{ ...