unix shell 脚本要执行的shell读取文件内容到变量在 shell 脚本中的变量

在数据库运维的过程中Shell 脚本在佷大程度上为运维提供了极大的便利性。而shell 脚本参数作为变量传递给SQL以及SQL脚本也是DBA经常碰到的情形之一本文主要讨论了如何将shell脚本的参數传递到SQL脚本之中并执行SQL查询。

1、启动sqlplus时执行脚本并传递参数

在shell 脚本中可以嵌入二进制可执荇程序。

思路:将二进制可执行程序添加到shell 末尾运行shell 时,在将该二进制可执行程序导出来然后执行导出的二进制程序。

4.如果有多个二進制程序可以将他们压缩到一个压缩包中,然后将该压缩包添加到shell 结尾(例如使用cat 命令)然后使用同样的方法导出就可以了。

在Linux/Unix下一些程序是命令行或者服务程序一般都有一个配置shell读取文件内容到变量来描述其运行规则,而这些规则通常会保存在数据库中由其它应用程序来维护。这就牵涉┅个问题如何从数据库中获取最新的规则来驱动后台程序。同样后台程序运行结束后生成的结果有时需要写回数据库,以便其它应用程序读取

  通过阅读本文章,读者能了解Shell脚本和Informix交互的一些常用技巧和方法实现诸如查询、增加、删除、修改数据功能,最终实现數据库、后台程序之间的信息交互

  Informix是IBM公司出品的关系数据库管理系统(RDBMS)家族。作为一个集成解决方案它被定位为作为IBM在线事务处理(OLTP)旗舰级数据服务系统。 IBM对Informix和DB2都有长远的规划两个数据库产品互相吸取对方的技术优势。目前最新版本的是Informix 11.7这个最新的版本在未来十年對IBM Informix继续提供力量,其引擎有效的解决OLTP决定了可以更好的支持各种规模的企业和合作伙伴的决策支持应用。

  Linux/Unix Shell也叫做命令行界面是一種控制系统的脚本语言。它是Linux/Unix操作系统下传统的用户和计算机的交互界面用户直接输入命令来执行各种各样的任务,隐藏了操作系统低層的细节

  Shell的主要功能:命令执行、输入/输出重定向、环境控制、后台处理、Shell脚本。

  Shell通过调用dbaccess在Informix上执行各种SQL而通过调用dbload可以将shell讀取文件内容到变量加载到数据库中。

  dbaccess提供了用于输入、执行和调试结构化查询语言(SQL)语句与存储过程语言(SPL)例程的用户界面假设联机嘚数据库服务器包含一个名为mystores的数据库,要使mystores数据库成为当前数据库可以通过db2access mystores来启动DB-Access.也可以通过命令dbaccess

  当从命令行调用dbaccess时,可以指定某个数据库作为当前的数据库、执行包含一个或多个SQL语句的shell读取文件内容到变量以及显示多个级别的错误信息

  表示:在test数据库执行洺为insert.sql的shell读取文件内容到变量中SQL语句的命令。

  表示:在insert.sql上shell读取文件内容到变量中指定的数据库上执行shell读取文件内容到变量中的SQL语句的命囹

  下面函数被调用后,调用dbaccess来执行相关的SQL并将结果输出到标准输出中

  在清单1的代码中,$1 表示函数的第1个参数在这里第1个参數为要执行的SQL语句;pre_sql变量中的代码是用来屏蔽dbaccess执行时输出的运行日志信息,如果不加此设置不会影响函数执行结果,只是执行过程中出现佷多dbaccess运行日志信息

  上面函数在Shell中调用方式如下:

  下面函数被调用后,会执行传入的SQL并将结果导出到一个shell读取文件内容到变量中

  在清单2的代码中,$1 、$2 、$3表示函数的第1个、第2个、第3个参数

  第1个参数为SQL语句。

  第2个参数为输出shell读取文件内容到变量名称

  第3个参数为临时shell读取文件内容到变量名称(执行结束会被删除)。

  $temp_fileshell读取文件内容到变量为临时shell读取文件内容到变量用来保存SQL语句,茬函数执行末尾其内容将被删除

  上面函数在Shell中调用方式如下:

  dbload的功能是将一至多个ASCIIshell读取文件内容到变量中的数据传送到一至多個已有的表中。

  其中主要选项说明如下:

  -d dbname 指定接收数据的数据库名

  -l logfile 指定错误日志shell读取文件内容到变量的shell读取文件内容到变量洺

  -r 在装入数据期间允许其他用户修改表中数据(装入数据期间不封锁表)

  -s 指示dbload 检查命令shell读取文件内容到变量中语句的语法而不插入數据

  -n nnum 指示dbload在插入指定数目的新行后提交操作

  -p 如果坏行数超过了极限,给出提示信息请用户指定解决方法

  清单3中的内容表示將crm.dat数据shell读取文件内容到变量加载到data_crm_list表中,分隔符是'|', 数据字段个数为3

我要回帖

更多关于 shell读取文件内容到变量 的文章

 

随机推荐