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

修改数据库数据

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

配置文件

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

[[email protected] 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

[[email protected] 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

原文地址:https://www.cnblogs.com/Andya/p/12524370.html

时间: 2024-11-02 15:57:40

Linux—编写shell脚本操作数据库执行sql的相关文章

shell脚本操作数据库

#!/bin/bash HOST_NAME="localhost" PORT=3306 USERNAME="root" PASSWORD="root" DBNAME="test" TABLENAME="tb_test" today=`date +%Y-%m-%d` #删除数据 delete_sql="delete from ${TABLENAME} where todaytime!= '${tod

Linux编写shell脚本的注意事项

命令的运行是从上而下.从左而右的分析与运行: 命令的下达就如同第五章内提到的: 命令.选项与参数间的多个空白都会被忽略掉: 空白行也将被忽略掉,并且 [tab] 按键所推开的空白同样视为空白键: 如果读取到一个 Enter 符号 (CR) ,就尝试开始运行该行 (或该串) 命令: 至於如果一行的内容太多,则可以使用『 \[Enter] 』来延伸至下一行: 『 # 』可做为注解!任何加在 # 后面的数据将全部被视为注解文字而被忽略! 如此一来,我们在 script 内所撰写的程序,就会被一行一行的

Linux系列教程(二十)——Linux的shell概述以及如何执行脚本

从这篇博客开始,我们将进入Linux的shell脚本的学习,这对于Linux学习爱好者而言是特别重要的一节,也是特别有意思的一节,shell 脚本就像我们知道的Java,php类似的编程语言一样,通过shell脚本,我们能完成很多有意思的应用程序.在学习中找到乐趣,这也是最重要的. 本篇博客我们先给大家介绍一下什么是shell,以及bash的基本功能. 1.Shell 是什么? 和大家通常说的shell是一门编程语言的说法其实是不完全正确的. ①.shell 是一个命令行解释器,它为用户提供了一

跟着老刘学《Linux就该这么学》第五天--编写Shell脚本

编写Shell脚本可以将Shell终端解释器当作人与计算机硬件之间的"翻译官",它作为用户与Linux系统内部的通信媒介,除了能够支持各种变量与参数外,还提供了诸如循环.分支等高级编程语言才有的控制结构特性.要想正确使用Shell中的这些功能特性,准确下达命令尤为重要.Shell脚本命令的工作方式有两种:交互式和批处理. 交互式(Interactive):用户每输入一条命令就立即执行. 批处理(Batch):由用户事先编写好一个完整的Shell脚本,Shell会一次性执行脚本中诸多的命

Linux/Unix shell 脚本中调用SQL,RMAN脚本

Linux/Unix shell脚本中调用或执行SQL,RMAN 等为自动化作业以及多次反复执行提供了极大的便利,因此通过Linux/Unix shell来完成Oracle的相关工作,也是DBA必不可少的技能之一.本文针对Linux/Unix shell脚本调用sql, rman 脚本给出了相关示例. 一.由shell脚本调用sql,rman脚本 [python] view plain copy print? 1.shell脚本调用sql脚本 #首先编辑sql文件 [email protecte

编写shell脚本和执行

这次的学习内容: 认识shell,如何编写shell脚本和执行Shell 其实就是一个解释执行命令的程序,所谓shell编程其实就是用一定的语法将各种基本的命令组合起来,让shell程序去解释执行.如果对windows的dos有了解,可以这样理解,其实shell脚本文件和.bat批处理文件差不多.然而linux下的shell比起windows的dos强大很多,呵呵.为了安全起见,创建一个普通的账号进行学习]# useradd cnetsa]# passwd cnetsa然后使用 cnetsa 这

Linux就该这么学——编写SHELL脚本

初识SHELL Shell脚本命令的工作方式: 交互式 : 用户每输入一条命令就会立即执行 批处理 : 由用户事先编好一个完整的SHELL脚本,shell脚本会一次性执行脚本中诸多的命令. 注: 1.查看SHELL变量可以发现当前系统已经默认使用Bash作为命令终端解释器了; 2.可以把SHELL终端解释器当做人与计算机之间的”翻译官”,它作为用户与Linux系统内部的通信媒介,除了能够支持各种变量与参数外,还提供诸如循环,分支等高级编程语言才有的控制结构特性. SHELL脚本初体验之我的第一个

linux下shell脚本执行方法及exec和source命令

exec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source可以查看所有的内部命令信息. bash shell的命令分为两类:外部命令和内部命令.外部命令是通过系统调用或独立的程序实现的,如sed.awk等等.内部命令是由特殊的文件格式(.def)所实现,如cd.history.exec等等. 在说明exe和source的区别之前,先说明一下fork的概念. fork是linux的系统调用,用来创建子进程(child

Linux系统编写shell脚本批量创建和删除用户

一.编写shell脚本批量添加用户 实现方法:判断用户是否存在,存在则返回错误提示,同时判断用户文件是否存在,不存在则退出 1.创建添加用户脚本 [[email protected] ~]# vim useradd.sh #!/bin/bashif [ $# -eq 0 ];then        echo "你没有输入任何文件!"        exit 1fi if [ ! -f $1 ];then        echo "输入有误!"        exit