sosi脚本改造

简介: 最近有一个应用需求,就是在一个shell脚本中,通过一些逻辑得到一系列表名,然后作为参数传给著名的sosi脚本,产出物是每张表对应的一个分析结果文件。

最近有一个应用需求,就是在一个shell脚本中,通过一些逻辑得到一系列表名,然后作为参数传给著名的sosi脚本,产出物是每张表对应的一个分析结果文件。

sosi原始脚本中对于接收表名是用类似如下的语法:

column TABLE_NAME heading "Tables owned by &Table_Owner" format a30
select table_name from dba_tables where owner=upper('&Table_Owner') order by 1
...
where 
    owner = upper(nvl('&&Owner',user))
and table_name = upper('&&Table_name')

然后执行脚本,会在变量出现的每一处命令行提示用户进行输入。

现在我需要让shell脚本调用这个sosi,表名作为参数传入,不要人工干预,自动赋值。可以改为:

COLUMN 1 new_value Table_owner
COLUMN 2 new_value Table_name
select '&1' "1" from dual;
select '&2' "2" from dual;
...
where 
    owner = upper('&&Table_owner')
and table_name = upper('&&Table_name')

传入sosi的是两个参数,table_owner和table_name,脚本其余部分使用table_owner和table_name的时候会自动使用开始赋值的值,注意这块必须是”前面的定义值”。

另外,如果参数值是数值类型,则需要写为:

select &1 "1" from dual;

只有字符型,才需要扩上引号。

目录
相关文章
用批处理来自动化项目编译及部署(附Demo)
原文:用批处理来自动化项目编译及部署(附Demo) 阅读目录 介绍 详细 处理 结论 Demo下载   介绍   一个项目从立项开始,可能就已经根据公司的配置模板将目录,文档结构定义出来。
892 0
|
7月前
|
JSON Go C++
开发与运维C++问题之在iLogtail新架构中在C++主程序中新增插件的概念如何解决
开发与运维C++问题之在iLogtail新架构中在C++主程序中新增插件的概念如何解决
62 1
|
SQL 缓存 关系型数据库
|
运维 NoSQL 安全
编写一个可复用的SpringBoot应用运维脚本
作为Java开发者,很多场景下会使用SpringBoot开发Web应用,目前微服务主流SpringCloud全家桶也是基于SpringBoot搭建的。SpringBoot应用部署到服务器上,需要编写运维管理脚本。本文尝试基于经验,总结之前生产使用的Shell脚本,编写一个可以复用的SpringBoot应用运维脚本,从而极大减轻SpringBoot应用启动、状态、重启等管理的工作量。本文的Shell脚本在CentOS7中正常运行,其他操作系统不一定适合。如果对一些基础或者原理不感兴趣可以拖到最后,直接拷贝脚本使用。
359 0
编写一个可复用的SpringBoot应用运维脚本
|
6月前
|
前端开发 JavaScript Java
hyengine 编译问题之复用脚本引擎如何解决
hyengine 编译问题之复用脚本引擎如何解决
|
Java 应用服务中间件 Shell
|
Kubernetes Cloud Native jenkins
下篇:使用jenkins发布go项目到k8s,接上篇的手工体验改造为自动化发布
下篇:使用jenkins发布go项目到k8s,接上篇的手工体验改造为自动化发布
643 1
|
BI 数据处理 Scala
报表统计_执行框架_旧模块改造 | 学习笔记
快速学习报表统计_执行框架_旧模块改造
131 0
报表统计_执行框架_旧模块改造 | 学习笔记

热门文章

最新文章