用shell抽取,更新db2的数据

   2015-06-30 0
正在看的db2教程是:用shell抽取,更新db2的数据。为工作需要而写的shell处理db2数据库的程序用shell抽取db2的数据,并进行处理。
  #SQL文定义

SQL="SELECT AAA, BBB, CCC FROM MYTBL1"

#执行SQL

SDATA=`db2 "$SQL"`

#返回值判断

if [ $? -ne 0 ]

then

#显示db2返回的错误信息

echo "$SDATA"

exit 1

fi

#对取得的数据进行处理。

echo "$SDATA" | sed -e '4,/^$/!d;/^$/d' |

while read AAA BBB CCC

do

echo "AAA IS $AAA, BBB IS $BBB, CCC IS $CCC"

done

#取得数据件数

echo "$SDATA" | sed -n -e '/^$/{1,3d;n;s/[^0-9]*\([0-9]*\)[^0-9]*/\1/;p;}' | read CNT

echo "The count of selected data is $CNT."

exit 0★更新db2的数据,并取得更新结果

  SQL="UPDATE MYTBL1 SET AAA='2005',BBB='05',CCC='12'"

#执行SQL

SDATA=`db2 -a "$SQL"`

#取得SQLCODE

echo "$SDATA" | sed -n -e 's/^.*sqlcode: \([-,0-9][0-9]*\).*/\1/p' | read SQLCODE

echo "Sqlcode is $SQLCODE."

#取得SQLSTATE

echo "$SDATA" | sed -n -e 's/^.*sqlstate: \([-,0-9][0-9]*\).*/\1/p' | read SQLSTATE

echo "Sqlstate is $SQLSTATE."

#取得更新件数(即sqlerrd的第三个值)

echo "$SDATA" | sed -n -e '/sqlerrd/s/^.*(3) \([-,0-9][0-9]*\).*/\1/p' | read UPDCNT

echo "Updated data's count is $UPDCNT."

#取得sqlerrd的第五个值

echo "$SDATA" | sed -n -e '/sqlerrd/{n;s/^.*(5) \([-,0-9][0-9]*\).*/\1/;p;}' | read SQLERRD5

echo "Sqlerrd(5) is $SQLERRD5."

 
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • MySql使用show processlist查看正在执行的Sql语
    今天上班例行的查看了下服务器的运行状况,发现服务器特卡,是mysqld这个进程占用CPU到了99%导致的。比较好奇是那个程序在使用mysql导致cpu这么高的,通过show processlist命令查看了当前正在执行的sql语句,从而定位到了对应的程序,发现代码中有一个死循环
    02-10
  • MySQL常用sql语句-----数据表的查询操作 mysql查询语句
    MySQL常用sql语句-----数据表的查询操作 mysql
    1.查询指定字段select c_id,c_age,c_name from t_student;select c_id as 编号,c_name as 姓名,c_age 性别 from t_student;2.去重查询select distinct c_address from t_studentselect distinct c_address,c_name from t_student3.比较运算符查询select c_nam
    02-10
  • 在MySQL命令行中使用SQL语句的规则 mysql语法规
    规则1: SQL语句必须以分号(;)或者(\G)结束分号(;)是SQL语句的结束标志。如果遗忘了分号,而直接按下回车键时,在MySQL客户端上将显示如下mySQL SELECT * FROM customer-因为没有以分号结束,客户端认为SQL语句并没有结束,显示[-]等待用户继续输入命令,直到
    02-10
  • 怎么用sql修改mysql表名 mysql数据库修改表名
    ALTER TABLE name RENAME TO new_name例如:ALTER TABLE register RENAME TO member
    02-10
  • hive界面工具SQL Developer的安装;使用sql developer连接hive;使用sql developer连接mysql
    hive界面工具SQL Developer的安装;使用sql dev
    需要oracle帐号登录后下载1、下载:http://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/index.html 2、下载后的就是xxx.app,直接启动即可 如何使用sql developer连接hive1、首先下载hive的jdbc驱动:https://www.cloudera.com/do
    02-10
  • 日常维护MySQL常用sql
    1.慢sql情况查询:  可以使用以下三种方式查询,第一种是了解MySQL进程大概情况;第二种是按照影响时间倒序的,可以查询到目前最慢的一条sql;第三种是防止sql 的info消息过长而无法显示完整。1 -- usual2 show processlist;3 -- extend4 SELECT * FROM info
    02-10
  • mysql捕捉所有SQL语句 用sql抓取数据
    MySQL可以通过开通general_log参数(可动态修改)来扑捉所有在数据库执行的SQL语句。显示参数:mysql show variables like 'general%log%';+------------------+---------------------------+| Variable_name    | Value                     |+-
    02-10
  • mysql使用Sql获取13位时间戳 mysql数据库时间戳
    SELECT REPLACE(unix_timestamp(current_timestamp(3)),'.',''); 
    02-10
  • mysql使用sql语句查询数据库所有表注释已经表字段注释
    mysql使用sql语句查询数据库所有表注释已经表字
    场景:1. 要查询数据库 "mammothcode" 下所有表名以及表注释/* 查询数据库 ‘mammothcode’ 所有表注释 */SELECT TABLE_NAME,TABLE_COMMENT FROM information_schema.TABLES WHERE table_schema='mammothcode'; 2. 要查询表字段的注释/* 查询数据库 ‘mammot
    02-10
  • 用SQL命令查看Mysql数据库大小 查询mysql数据库
    要想知道每个数据库的大小的话,步骤如下:1、进入information_schema 数据库(存放了其他的数据库的信息)use information_schema;2、查询所有数据的大小:select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables; 3、查看指定数据库
    02-10
点击排行