shell脚本操作mysql通用脚本

作用:可以在写监控脚本时,将结果值保存到mysql数据库

使用方法:sh 脚本  库名称.表名称 字段=值 字段=值 字段=值

1、脚本

[root@localhost tmp]# cat writ_mysql.sh
#!/bin/bash
#判断传入的参数
if [ $# -eq 0 ]
    then
      echo sh $0 table_name name=张三 xb=else
        #输入的参数转换函数 例子: name=张三 xb=1 转换成 name,xb '张三','1'
        convfield(){
                #数组索引
                j=1
                #获取输入的参数,排除第一个参数
                for i in "${@:2}"
                  do 
                   #获取name名称
                   name[$j]=$(echo $i|awk -F = '{print $1}')
                   #获取name的值
                   value[$j]=\'$(echo $i|awk -F = '{print $2}')\'
                   #查看字段名称和值
                   #echo ${name[$j]}=${value[$j]}
                   #索引加1
                   j=$((j+1))
                  done
                #拼接成sql的name和value
                new_name=$(echo ${name[@]}|sed 's/ /,/g')
                new_value=$(echo ${value[@]}|sed 's/ /,/g')

                echo "$1($new_name) values($new_value)"
            }

        jdbcinfo(){
                user=root
                pass='password'
                ip=192.168.1.1
                port=3306
              }
        #将所有参数传递给转换函数,进行转换
        convfield $@
        jdbcinfo


        #将值插入指定表字段
        mysql -u$user -h$ip -P $port -p$pass -e \
        "insert into $1($new_name) values($new_value)"

        #查询对应表数据
        mysql -u$user -h$ip -P $port -p$pass -e \
        "select * from $1" 
fi

2、执行

[root@localhost tmp]# sh writ_mysql.sh nginx_info.test name=周末
nginx_info.test(name) values('周末')
+----+--------+---------------------+--------+
| id | name   | date                | bz     |
+----+--------+---------------------+--------+
|  1 | zhangs | 2022-07-11 15:15:51 | 测试   |

| 13 | 周末   | NULL                | NULL   |
+----+--------+---------------------+--------+

 

posted @ 2022-07-12 11:07  苍茫宇宙  阅读(1604)  评论(0编辑  收藏  举报