修改数据库数据

  在升级应用时,我们常常会遇到升级数据库的问题,这就涉及到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.logsource ./test_sql.properties
echo "Parameters: cat test_sql.properties" >> test_sql_sh.logwhile read line
doecho $line >> test_sql_sh.log ;
done < test_sql.propertiesecho "------ 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.logid=$(${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.logendtime=`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.logexit 0

脚本执行

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

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

#!/bin/sh
mysql_engine=`which mysql`
${mysql_engine} -uroot -p123456 <<EOF 1>>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—编写shell脚本操作数据库执行sql相关推荐

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

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

  2. linux 命令脚本文件,Linux编写shell脚本执行多个命令

    背景:Linux做项目写完代码之后,需要用一个文件夹下多个文件进行测试,而且需要对于同一个文件执行多个命令,这个时候如果一个一个命令输入比较繁琐,于是写了一个简单的命令脚本如下: #! /bin/ba ...

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

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

  4. linux——编写Shell脚本常用命令:diff、patch、cut、sort、uniq、、||、test、tr

    diff 和 patch 命令帮助:diff –help | patch –help diff命令在最简单的情况下,比较给定的两个文件的不同.如果使用"-"代替"文件&q ...

  5. linux 编写shell脚本

    目录 简单shell 示例 接受用户参数 判断用户参数(判断语法) 流程控制语句 (if .for .while.case) 简单shell 示例 Shell脚本命令的工作方式有两种:交互式和批处理. ...

  6. 什么是Linux的Shell脚本和怎么执行脚本?

    一.什么是Shell? shell是外壳的意思,就是操作系统的外壳.我们可以通过shell命令来操作和控制操作系统,比如Linux中的Shell命令就包括ls.cd.pwd等等.总结来说,Shell是 ...

  7. 查看linux中的sh指向哪,什么是Linux的Shell脚本和怎么执行脚本?

    1.什么是Shell?shell shell是外壳的意思,就是操做系统的外壳.咱们能够经过shell命令来操做和控制操做系统,好比Linux中的Shell命令就包括ls.cd.pwd等等.总结来讲,S ...

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

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

  9. linux 编写sh文件,linux编写shell脚本程序one官方

    ----2.配置串口 ----Windows95的串口配置比Windows3.x较为复杂,但其功能更强大,对一般程序可使用CommConfigDialog函数以对话框方式设置波特率.数据位.奇偶校验. ...

最新文章

  1. Go语言学习笔记 - PART11 - 面向对象
  2. 简单的OSPF多区配置
  3. python实现排序算法_python实现·十大排序算法之插入排序(Insertion Sort)
  4. C++读取txt数据为二维数组 将数据保存到txt文本中
  5. [机器学习]AutoML --- TOPT
  6. TS 188字节流结构图
  7. Bellman_Ford算法(求一个点到任意一点的最短距离)
  8. hive 的drop table命令出错
  9. 简单servlet和jdbc回顾
  10. iOS开发笔记 基于wsdl2objc调用asp.net WebService
  11. css的写法 有点凌乱(养成这习惯 神马浏览器兼容都是浮云 so easy)
  12. Android WiFi 扫描并选择网络进行连接
  13. 【图像压缩】基于PCNN实现图像的压缩重建附matlab代码
  14. 你不知道的Guava用法
  15. 服务器文档链接电脑,服务器怎么链接电脑
  16. 腾讯云直播产品系列(一):标准直播POC实践
  17. 4个Python经典项目实战,练手必备哦
  18. c++中ASCII码
  19. 2015年c语言等级考试题1 10 2分,全国计算机等级考试二级c语言真题题库1+2015年9月.docx...
  20. 操作必须使用一个可更新的查询 ,解决

热门文章

  1. shell正则表达式去除注释行
  2. python中的lambda函数用法--无需定义函数名的函数或子程序,避免代码充斥着大量单行函数
  3. Self-Supervised Learning 入门介绍
  4. Kafka刚开启就秒退
  5. jquery.pin 修改浮动的top元素
  6. 黑苹果找不到触控板_苹果高管告诉你为何要添加触控板功能
  7. 宏基因组多少钱一个样_太阳能路灯价格是多少钱一盏(12米高杆灯报价)
  8. “CSDN开发助手”:【必备插件 · 安装与使用教程】
  9. JS如何截取两个字符串之间及字符串前后内容 - 代码篇
  10. 增强优化JavaScript性能的方法 - 技巧大全