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

修改数据库数据

在升级应用时,我们常常会遇到升级数据库的问题,这就涉及到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中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/350052.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DMN 1.1 XML:使用Drools 7.0从建模到自动化

我是一名自由顾问&#xff0c;但今天我是一名博士生。 本文的全球背景是企业架构&#xff08;EA&#xff09;&#xff0c;它需要对企业进行建模。 由于EA的一个方面是业务流程建模&#xff0c;所以我使用BPMN已有数年之久&#xff0c;但是这种表示方式并不十分适合表示决策标准…

mysql安装模块解释_MySQL的模块不能安装的解决方法_MySQL

我们最常用的 DBD::mysql 模块,我发现是难住很多人的地方.因为安装老是失败,下面我介绍一下解决方法,比如我使用 cpanm 安装,有时就出 /home/nue2501j/work/DBD-mysql-4.010/blib/arch/auto/DBD/mysql/mysql.so: undefined symbol: DBIc_TRACE_LEVEL at /usr/lib/perl5/5.8.5/i…

nginx访问目录是没加/的重定向控制

static 模块提供了root与alias功能&#xff1b;发现目标是目录时&#xff1b;但URI末尾未加/时&#xff1b;会返回301重定向&#xff1b;重定向后会加/ 指令 Syntax: server_name_in_redirect on | off;# 控制返回那个域名 Default: server_name_in_redirect off; Context: ht…

oracle mysql 字段_Oracle和MySQL修改字段

一、修改字段名&#xff1a;Oracle&#xff1a;ALTER TABLE tableName RENAME COLUMN oldColumnName TO newColumnName;eg: ALTER TABLE web RENAME COLUMN wen_name TO web_name;MySQL&#xff1a;ALTER TABLE tableName CHANGE oldColumnName newColumnName newColumnDataTyp…

Kafka REST Proxy for MapR Streams入门

介绍 MapR生态系统软件包2.0&#xff08;MEP&#xff09;随附了一些与MapR流有关的新功能&#xff1a; MapR Streams的Kafka REST代理为MapR Streams和Kafka集群提供RESTful接口&#xff0c;以使用和生成消息并执行管理操作。 Kafka Connect for MapR Streams是一个实用程序&…

开张大吉

在Windows的天地中做了五年开发之后&#xff0c;又跑到了开源的Linux/Java世界遨游了五年&#xff0c;于最近半年&#xff0c;又重新回到M$阵营。这半年来&#xff0c;迫于项目进度的压力&#xff0c;较少与他人交流&#xff0c;项目中虽然采用了VS2003&#xff0c;但是运用的思…

mysql四种输入_mysql四种事务隔离级别

mysql事务并发问题ACID什么的就不啰嗦了。mysql多个事务并发的时候&#xff0c;可能会出现如下问题&#xff1a;1. 更新丢失即两个事务同时更新某一条数据&#xff0c;后执行的更新操作会覆盖先执行的更新操作&#xff0c;导致先执行的更新结果丢失。2. 脏读即一个事务会读到另…

apache hadoop_春天遇见Apache Hadoop

apache hadoopSpringSource 刚刚宣布了适用于Apache Hadoop的Spring的第一个GA版本 。 该项目的目的是简化基于Hadoop的应用程序的开发。 您可以下载该项目在这里 &#xff0c;并检查了Maven的文物在这里 。 Apache Hadoop的Spring诞生是为了解决Hadoop应用程序构建不良的问题…

sinacloud webpy mysql_Mysqldb和webpy的安装

1.首先安装mysqlsudo apt-get install mysql-server2.然后安装libmysqld-dev和libmysqlclient-dev&#xff0c;否则在安装Mysqldb的时候会报找不到mysql_config文件sudo apt-get install libmysqld-devsudo apt-get install libmysqlclient-dev修改site.cfg中的mysql_config的配…

消费者驱动的Pact和Spring Boot测试

最近&#xff0c;我的一位同事偶然发现了Pact.io &#xff0c;我们的当前应用程序已发展到50多种服务&#xff0c;并且我们开始出现一些集成测试失败和脆弱的开发/验收测试环境。 因此&#xff0c;我们决定研究尝试与此相关的方法。 我从阅读开始&#xff1a; https : //docs.…

python空格怎么加密_使用Python的RSA加密

如果您想使用python高效地编码RSA加密&#xff0c;我的github存储库肯定会理解和解释python中RSA的数学定义RSA密钥生成def keyGen(): Generate Keypair i_prandint(0,20)i_qrandint(0,20)# Instead of Asking the user for the prime Number which in case is not feasible,# …

MySQL中字符串函数详细介绍

MySQL字符串函数对于针对字符串位置的操作&#xff0c;第一个位置被标记为1。 ASCII(str)返回字符串str的 最左面字符的ASCII代码值。如果str是空字符串&#xff0c; 返回0。如果str是NULL&#xff0c;返回NULL。 mysql> select ASCII(2);-> 50mysql> select ASCII(2)…

java 转储快照分析_分析Java核心转储

java 转储快照分析在本文中&#xff0c;我将向您展示如何调试Java核心文件&#xff0c;以查看导致JVM崩溃的原因。 我将使用在上一篇文章&#xff1a; 生成Java Core Dump中生成的核心文件。 您可以通过以下几种方法来诊断JVM崩溃&#xff1a; hs_err_pid日志文件 当JVM中发生…

zbox mysql_20190213云服务器部署禅道

1.系统环境&#xff1a;腾讯云服务器&#xff1b;Centos 7.02.工具&#xff1a;禅道的压缩包(需要是tar.gz文件名的)、Xshell、Xftp&#xff1b;3.安全组规则的设置&#xff1b;4.端口号的设置以下为详细步骤&#xff1a;需要在空白的服务器上去进行操作。还需要再琢磨的。1、x…

Java编程语言的历史和未来

通过AppDynamics解决应用程序问题的速度提高了10倍–以最小的开销在代码级深度监视生产应用程序。 开始免费试用&#xff01; 作为Internet上著名的编程语言 &#xff0c;Java对人们如何浏览数字世界产生了深远的影响。 Java功能设置了用户对他们访问互联网的设备的性能期望的…

fmdb和mysql的区别_FMDB

什么是数据库数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,我们可以很方便的对数据库中的数据进行增、删、改、查操作数据库类型数据库可以分为2大种类关系型数据库(主流)关系型数据库(主流)对象型数据库常用关系型数据库PC端&#xff1a;Oracle、MySQL、SQL S…

RabbiqMQ快速入门

RabbitMQ 官网地址: https://www.rabbitmq.com/ 一个遵循AMQP协议&#xff0c;开源面向消息的中间件,支持多种编程语言。 Rabbitmq 能做什么? 逻辑解耦&#xff0c;异步的消息任务消息持久化&#xff0c;重启不影响削峰&#xff0c;大规模的消息处理主要的特点 可靠性&#xf…

Java命令行界面(第13部分):JArgs

JArgs 1.0的区别在于&#xff0c;这是我的第13篇文章的主题&#xff0c;该文章是关于Java命令行参数解析的。 JArgs是一个开放源代码&#xff08; BSD许可证 &#xff09;库&#xff0c;主要由Steve Purcell和Ewan Mellor等 不同的贡献者支持。 事实证明&#xff0c;这在第一次…

pthread vs openMP之我见

前两天看了些并行计算的文章&#xff0c;了解了一些并行计算的方法和原理。然后发现多线程实现里面还有个openMP&#xff0c;这个以前从来没见过&#xff08;火星了&#xff09;&#xff0c;之前只是知道pthread线程库和微软也实现了一套线程。又看了看openMP的一些教程才知道它…

线程池默认多少个线程_我需要多少个线程?

线程池默认多少个线程这取决于您的应用程序。 但是&#xff0c;对于那些希望对如何从生产站点购买的所有昂贵内核中挤出大量资金的人&#xff0c;请多多包涵&#xff0c;我将阐明围绕多线程 Java应用程序的奥秘。 内容针对最典型的Java EE应用程序进行了“优化”&#xff0c;该…