修改数据库数据

在升级应用时,我们常常会遇到升级数据库的问题,这就涉及到sql脚本的编写。

一般我们会通过写sql脚本,然后将xxx.sql脚本放到数据库中进行source xxx.sql执行。本篇文章,我们可以通过写shell脚本来执行数据库操作。

配置文件

创建 test_sql.properties 作为shell脚本的外部配置参数修改:

[andya@liunx01 sql_sh]$ vim test_sql.properties

# set parameters start

# 1 db name

dbName="db01"

# 2 the valueof net speeds and requests

netMaxSpeeds=500

netRequests="test.t1"

# 3 database info

## mysql address

MYSQL_ADDRESS="10.127.0.1"

## database name

MYSQL_DATABASE_NAME="db_test"

## 5.3 bdoc connect mysql user name

MYSQL_USER="user01"

## 5.4 bdoc connect mysql user password

MYSQL_PASSWD="123456"

## 5.5 mysql engine

DATABASE_ENGINE=mysql

shell脚本

创建shell脚本test_sql.sh

[andya@liunx01 sql_sh]$ vim test_sql.sh

#!/bin/bash

starttime=$(date +%Y-%m-%d\ %H:%M:%S)

echo "【Start to execute the script】, start time is: " $starttime >> test_sql_sh.log

# 1 read parameters

# ===================================================================

echo "------ test_sql.properties start------" >> test_sql_sh.log

source ./test_sql.properties

echo "Parameters: cat test_sql.properties" >> test_sql_sh.log

while read line

do

echo $line >> test_sql_sh.log ;

done < test_sql.properties

echo "------ test_sql.properties end------" >> test_sql_sh.log

# =================================================================

# 2 update database

# ========================

testSql="

SET @dbId=(SELECT id FROM ${MYSQL_DATABASE_NAME}.\`test_tb01\` WHERE \`NAME\` = \"${dbName}\");

INSERT INTO ${MYSQL_DATABASE_NAME}.\`test_tb02\` (\`NAME\`, \`DB_ID\` ,\`MAX_SPEEDS\`, \`NET_REQUESTS\`) VALUES ('${dbName}', @dbId, '${netMaxSpeeds}', '${netRequests}');

"

echo -e "\nSql: add hbase sql is: "${testSql} >> test_sql_sh.log

id=$(${DATABASE_ENGINE} -h${MYSQL_ADDRESS} -u${MYSQL_USER} -p${MYSQL_PASSWD} -D ${MYSQL_DATABASE_NAME} -e "${testSql}")

echo "Sql: Modify db data successfully, and insert db id is: "${id} >> test_sql_sh.log

endtime=`date +"%Y-%m-%d %H:%M:%S"`

echo "【Execute the script end】, end time is: " ${endtime} >> test_sql_sh.log

echo -e "\n" >> test_sql_sh.log

exit 0

脚本执行

./test_sql.sh

并且可以查看到输出日志test_sql_sh.log

另一种连接方式(待研究)

#!/bin/sh

mysql_engine=`which mysql`

${mysql_engine} -uroot -p123456 <>test.log

use db01;

select * from tb01 where id = 4;

EOF

exit 0

其中:

1)1>>test.log是重定向标准输出到test.log中,当然,也尝试去掉1,也是可以输出。

2)我们也可以使用2 >/dev/null重定向来屏蔽错误信息,2即为标准错误输出,对于linux来说/dev/null即为空设备,输入进去的数据即为丢弃。

3)EOF表示后续输入作为shell的输入,直到下一个EOF出现,再返回主进程shell中。

linux mysql 写shell_Linux—编写shell脚本操作数据库执行sql相关推荐

  1. Linux—编写shell脚本操作数据库执行sql

    修改数据库数据   在升级应用时,我们常常会遇到升级数据库的问题,这就涉及到sql脚本的编写.   一般我们会通过写sql脚本,然后将xxx.sql脚本放到数据库中进行source xxx.sql执行 ...

  2. 【Linux学习】如何编写Shell脚本调用企业微信api来发消息给企业微信成员?

    一.前言 最近通过python实现了发送消息给企业微信的功能,参考链接: [Jenkins学习 ]如何编写Python脚本来调用企业微信的api通知企业微信成员关于Jenkins的编译结果? http ...

  3. shell脚本操作数据库插入数据

    shell脚本实现添加用户 主方法:定义变量,调用函数. shell中的特殊变量 $#:脚本输入参数的个数 $? 上个命令的退出状态,或函数的返回值 $$ 当前Shell进程ID.对于 Shell 脚 ...

  4. linux脚本生成数字写入文本,4.2 编写Shell脚本(P80-85)——《Linux就该这么学》学习笔记16...

    一.Shell 脚本命令的2种工作方式 交互式:输入一条(命令),执行一条 批处理:事先写好一个Shell脚本,一次性执行里面的所有命令 备注:Shell脚本不仅包含命令,还包含操作逻辑(if,for ...

  5. linux 脚本监听,Linux—编写shell脚本监控主机

    编写SHELL脚本监控主机 1.用vi命令在/root目录是新建一个脚本文件sysmon.sh: 内容如下: #!/bin/bash dug=$(df -h | grep "/$" ...

  6. Linux环境下,通过shell脚本实现一键部署MySQL,并支持多种类型

    Linux环境下一键部署MySQL脚本,支持多种类型 前言 一.使用前须知 二.使用方法 三.shell脚本内容 总结 前言   MySQL是目前最流行的关系型数据库管理系统之一,属于 Oracle ...

  7. linux 脚本中 -le,Linux中编写Shell脚本

    目录 Shell Shell是一个命令解释器,它的作用是解释执行用户输入的命令及程序等. 用户每输入一条命令,Shell就执行一条.这种从键盘输入命令,就可以立即得到回应的对话方式,称为交互的方式. ...

  8. Linux系统一键安全加固shell脚本编写思路

    本次分享一下个人在对Linux系统一键安全加固shell脚本编写时的一些思路: Linux系统一键安全加固shell脚本编写思路 1.编写须知 1.1 脚本使用说明 1.2 主要功能说明: 1.3隐藏 ...

  9. shell脚本操作MYSQL

    1.创建脚本test.sh !/bin/bash HOSTNAME="192.168.111.84" #数据库信息 PORT="3306" USERNAME=& ...

最新文章

  1. IDEA - 解决 Maven 初始化配置 web.xml 为 2.3 的问题
  2. python下载不了-python安装不了
  3. 152. 城市游戏【单调栈】
  4. python utf8_肿么在Python里使用UTF-8编码
  5. 2020年最全最简单KMP算法讲解
  6. 数据抽象能力---适合任何行业
  7. byte 类型_java知识总结(九):基本类型转换
  8. Dom-Attribute对象
  9. 谷歌大脑科学家 Caffe缔造者 贾扬清 微信讲座
  10. Java判断一个实体类对象实例的所有成员变量是否为空
  11. pda扫描枪屏幕_PDA扫描枪的介绍
  12. array 前端面试题_前端面试中的常见的算法问题
  13. springboot学习(下)
  14. 中国大地坐标系CGCS2000
  15. 【青龙面板】天翼云盘签到
  16. 解决AE在mac big sur系统上安装闪退打不开问题,最新After Effects 2021 for Mac中文直装(ae 2021 mac)详细安装教程
  17. python excel文件转换成字符串_python利用pandas将excel文件转换为txt文件的方法
  18. 小熊开发板STM32工具出现错误Error:an error occured while uploading data from the virtual partition 0xF1
  19. 【游戏美术】Unity中,场景的优化以及基本规范
  20. 多层高速PCB设计学习笔记(三) GND的种类及PCB中GND布线实战

热门文章

  1. c语言也能用模板方法模式?
  2. linux安装mysql启动失败的原因_爱在linux系统安装mysql启动失败如何处理?
  3. 代码拾取图片某一点的颜色_RPG游戏开发日志7:道具拾取与存放
  4. android webview js 交互框架,自定义android混合框架开发实践1:实现基础andorid和webview交互...
  5. 【渝粤教育】国家开放大学2019年春季 3896人文英语1 参考试题
  6. 【渝粤教育】 国家开放大学2020年春季 2412基础写作 参考试题
  7. 【渝粤教育】 国家开放大学2020年春季 2528监督学 参考试题
  8. 【渝粤题库】陕西师范大学201491 法学导论作业
  9. 【渝粤题库】国家开放大学2021春2044教育研究方法题目
  10. vb 发送html邮件,【VB】邮件发送功能