Shell脚本读取mysql结果集各数据项的值

Linux下用shell脚本读取MySQL结果集各数据项的值,按行读取sql结果,将sql执行结果读取到shell变量中,然就可进行处理。

HOSTNAME="172.16.xx.xx"    #数据库信息
PORT="3306"
USERNAME="root"
PASSWORD="root"

DBNAME="log"         #数据库名称
TABLENAME="student"

COMMAND1="mysql -h${HOSTNAME}  -P${PORT}  -u${USERNAME} -p${PASSWORD} ${DBNAME}
方法一:
while read -a row
do
    echo "..${row[0]}..${row[1]}.."
done< <(echo "select  id ,name  from  student;" | ${COMMAND1})

方法二:
while read a b
do
    echo "..${a}..${b}.."
done< <(echo "select  id ,name  from  student;" | ${COMMAND1})

注释:注意"done< <("的写法,第一个"<"要和"done"之间没空格,两个"<"之间有一个空格,"<" 和"("之间没空格。

时间: 2024-08-04 18:37:32

Shell脚本读取mysql结果集各数据项的值的相关文章

shell 脚本实战笔记(6)--集群环境配置检测

1). 背景: 集群部署的时候, 需要一致的配置和环境设置. 对于虚拟机集群, 可以借助镜像拷贝, 复制和还原集群机器. 对与物理机集群而言, 则不一样, 如果机器一多, 多人去操作和配置, 对于成熟精干的团队还好, 对于不熟悉环境的小团队, 由于水平的参差不齐, 往往会导致不一致的环境. 因此无论如何, 写脚本进行自动化的配置和环境校验总是最佳实践. 2). 假设应用场景:*) 系统环境: 安装CDH5, 集群规模为16台机器, 每台机器16CPU, 内存16G, 2块SATA盘共500G,

shell 脚本实战笔记(3)--集群机器的时间同步设置

背景: 有些分布式服务(比如HBase服务), 依赖于系统时间戳, 如果集群各个节点, 系统时间不一致, 导致服务出现诡异的情况. 解决方案: 那如何同步集群各个节点之间的时间? 采用NTP(Network Time Protocol)方式来实现, 选择一台机器, 作为集群的时间同步服务器, 然后分别配置服务端和集群其他机器 1.NTP服务端 *) 安装ntp服务 yum install ntp *) 配置/etc/ntp.conf 这边采用本地机器作为时间的原点 注释server列表 #ser

使用shell脚本调用mysql数据库存储过程,并设置定时任务

本来是要mysql数据库中创建事件任务来,定时执行存储过程,做数据传输的...后来由于种种原因,就使用crontab来定时执行,调用存储过程. 实现这个数据传输分为两步: 第一步:编写shell脚本调用mysql数据库存储过程,如下: #!/bin/bash#0 1 * * * sh /home/drmTrans3/rj_proc.shhost1=127.0.0.1user=systempasswd=linuxport=3306mysql -h${host1} -u${user} -p${pas

shell脚本执行mysql语句出现的问题

shell脚本执行mysql语句出现的问题,问群里的大牛的到解答,是单引号问题,改成双引号即可 #小提示(对本主题没什么关联):ubuntu目前使用的是dash,导致一些for(()函数无法正常执行, sudo dpkg-reconfigure  dash 选择NO,就改会bash了 一.脚本内容如下: #/bin/bash hostname='192.168.2.52' port=3306 username='root' password='123456' #dbname='' #-----s

修改SNMP端口并利用snmpwalk测试,nagios监控,脚本读取后筛选出磁盘占用空间的值

############################################################插入一个信息Handy.sh里,Linux下如果要根据read到的nl序号筛选出目录名.需要用以下表达式:folder_name=ls -l "$DIR" | awk -F" " '{ print $9 }' | grep -v Handy.sh | nl | grep '\ '"$REPLY"$'\t' | a<br/&

Saiku数据库迁移后的刷新脚本-Shell脚本读取数据库中的数据(二十三)

Saiku数据库迁移后的刷新脚本 之前有谈过对saiku中的数据进行刷新,因为saiku默认会从缓存中查询数据,但是配置不使用缓存又会效率低下... 所以这里就需要做一个数据刷新,每次ETL之后都需要执行一遍数据刷新脚本. 刷新脚本主要分为两部分 1.使用shell命令从数据库中读取已有的用户信息 (因为已经做过数据迁移,数据库已经从h2转为我们自己的mysql) saikuRefresh.sh #!/bin/bash #数据库连接信息 HOSTNAME="10.11.22.33" #

Shell脚本快速部署Kubernetes集群系统

本文紧跟上节所讲的手动部署Kubernetes管理Docker篇所写,本篇主要内容利用Shell脚本完成快速部署Kubernetes集群.上节博文看过的朋友也能感觉到部署过程相对比较简单,那么,出于简化工作流程,推进运维自动化角度来说,于是花了2/3天时间写这个部署Kubernetes脚本. 运维工作中,常常会遇到部署各种各样的服务,建议:常规部署都应该尽量使用脚本完成,一方面提高自身脚本编写能力,另一方面推进运维自动化. 详细部署说明文档:http://lizhenliang.blog.51c

通过shell脚本实现MySQL备份并恢复,for in流程控制

从3306备份数据库,还原到3307数据库上,通过shell脚本的for in流程控制实现 #!/bin/bash my_date=`date +%Y%m%d` my_time=`date +%H%M` my_date_yesterday=`date +%Y%m%d --date='1 days ago'` echo "----------------------------------------------------" echo "$my_date $my_time&q

企业级通过shell脚本开发MySQL启动脚本 案例

企业Shell面试题10:开发MySQL启动脚本说明MySQL启动命令为:/bin/sh mysqld_safe --pid-file=$mysqld_pid_file_path 2>&1 > /dev/null &停止命令为:mysqld_pid=`cat "$mysqld_pid_file_path"`if (kill -0 $mysqld_pid 2>/dev/null)  then    kill $mysqld_pid    sleep 2f