shell脚本操作MYSQL
1.创建脚本test.sh
!/bin/bash HOSTNAME="192.168.111.84" #数据库信息
PORT="3306"
USERNAME="root"
PASSWORD="111"DBNAME="test_db_test" #数据库名称
TABLENAME="test_table_test" #数据库中表的名称#也可以写 HOSTNAME="localhost",端口号 PORT可以不设定#创建数据库,下面是第一种方式,直接链接数据库并且执行sql
create_db_sql="create database IF NOT EXISTS ${DBNAME}"
mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} -e "${create_db_sql}"#第二种,不执行sql,而是连接数据库,使用<<EOF将后面的语句作为输入执行,
#Shell中通常将EOF与 << 结合使用,表示后续的输入作为子命令或子Shell的输入,直到遇到EOF为止,再返#回到主调Shell。可以把EOF替换成其他东西,意思是把内容当作标准输入传给程序
mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD}<<EOF
use ${DBNAME}#下面是sql,注意!可以写多条SQL,但每条sql之间使用;分割
select * from test_table_test;
select now();
create temporary table temp (select * from test_table_test);
EOF
2.给脚本赋予执行权限,将上述文件保存成sh文件,然后赋予权限chmod +x,即可执行。
chmod +x test.sh
3.执行sh
./test.sh
MYSQL在shell脚本中使用命令行的一些注意点
1.使用上述第二种方式操作MySQL时,书写SQL语句时,变量的赋值问题
!/bin/bash HOSTNAME="192.168.111.84" #数据库信息
PORT="3306"
USERNAME="root"
PASSWORD="111"DBNAME="test_db_test" #数据库名称
TABLENAME="test_table_test" #数据库中表的名称CONDITION='a = 1 and b = 2'
COLUMNVALUE='21314'mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD}<<EOF
use ${DBNAME}#r如果是条件,可直接拼接在sql后
select * from test_table_test where ${CONDITION};#如果是字段值.需要引号
select * from test_table where a = '${COLUMNVALUE}'
EOF
2.shell脚本中,如果sql语句中某些表的字段名与MySQL关键字一样,则需要转意
!/bin/bash HOSTNAME="192.168.111.84" #数据库信息
PORT="3306"
USERNAME="root"
PASSWORD="111"DBNAME="test_db_test" #数据库名称
TABLENAME="test_table_test" #数据库中表的名称mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD}<<EOF
use ${DBNAME}#r如果test_table表中有一个字段名叫system,则查询时需要使用\转意
select \`system\` from test_table_test;EOF
3.使用临时表时需要注意,在一个查询中只能使用一次临时表,创建临时表后,原表会被屏蔽,只有删除了临时表后才能查询到原表
tips:关于临时表的使用
show tables 语句不会列举临时表;
临时表只在当前连接可见,当这个连接关闭的时候,会自动drop。这就意味着你可以在两个不同的连接里使用相同的临时表名,并且相互不会冲突,或者使用 已经存在的表,但不是临时表的表名。(当这个临时表存在的时候,存在的表被隐藏了,如果临时表被drop,存在的表就可见了)
临时表只能用在 memory,myisam,merge,或者innodb
!/bin/bash HOSTNAME="192.168.111.84" #数据库信息
PORT="3306"
USERNAME="root"
PASSWORD="111"DBNAME="test_db_test" #数据库名称
TABLENAME="test_table_test" #数据库中表的名称mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD}<<EOF
use ${DBNAME}create temporary table tmp_table(name varchar(10) not null,passwd char(6) not null); #下面语句执行会报错,can not reopen table
select * from tmp_table where exists (select count(*) from tmp_table)EOF
shell脚本操作MYSQL相关推荐
- shell脚本操作mysql数据库,使用mysql的-e参数可以执行各种sql的(创建,删除,增,删,改、查)等各种操作
来源:http://blog.163.com/xychenbaihu@yeah/blog/static/13222965520114116289991/ mysql -hhostname -Ppor ...
- shell编程系列22--shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查)
shell编程系列22--shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查)Shell脚本与MySQL数据库交互(增删改查)# 环境准备:安装mariadb 数据库 [root ...
- shell mysql e_shell脚本操作mysql数据库,使用mysql的-e参数可以执行各种sql的(创建,删除,增,删,改、查)等各种操作...
mysql -hhostname -Pport -uusername -ppassword -e 相关mysql的sql语句,不用在mysql的提示符下运行mysql,即可以在shell中操作m ...
- shell mysql e_shell脚本操作mysql数据库
使用 mysql -e 参数可以执行各种 sql 的各种操作语句.不用在mysql的提示符下运行mysql,即可以在shell中操作mysql的方法. 格式:mysql -hhostname -Pp ...
- Shell脚本调用mysql语句
方法一: mysql -hhostname -Pport -uusername -ppassword -e 相关mysql的sql语句. 不用在mysql的提示符下运行mysql,即可以在shell中 ...
- shell脚本获取mysql插入数据自增长id的值
shell脚本获取mysql插入数据自增长id的值 在shell脚本中我们可以通过last_insert_id()获取id值,但是,需要注意的是,该函数必须在执行插入操作的sql语句之后,立即调用,否 ...
- shell脚本修复MySQL主从同步
shell脚本修复MySQL主从同步 发布:thebaby 来源:net [大 中 小] 分享一例shell脚本,用于修改mysql的主从同步问题,有需要的朋友参考下吧. 一个可以修改my ...
- 使用shell脚本调用mysql数据库存储过程,并设置定时任务
本来是要mysql数据库中创建事件任务来,定时执行存储过程,做数据传输的...后来由于种种原因,就使用crontab来定时执行,调用存储过程. 实现这个数据传输分为两步: 第一步:编写shell脚本调 ...
- shell备份mysql思路_写一个shell脚本备份mysql数据库的步骤
写一个shell脚本备份mysql数据库的步骤 发布时间:2020-05-25 15:47:41 来源:51CTO 阅读:221 作者:三月 下文我给大家简单讲讲关于写一个shell脚本备份mysql ...
最新文章
- [OpenJudge] 百练2754 八皇后
- 新Astaroth***病毒可利用杀毒软件窃取数据
- How is parsed BeanDefinition registered
- Vue 下拉刷新及无限加载组件 - 有你便是晴天 - 博客园
- STM32H743+CubeMX-定时器TIM输出PWM(Output Compare模式)
- php中的递归查找文件夹,PHP递归遍历文件夹
- 音乐陶冶情操,怎样让孩子喜欢音乐?
- Vue2.0 之 自带浏览器里无法打开(兼容IE处理) - 解决方案 命令
- mysql的4字节字符支持_让MySql支持Emoji表情(MySQL中4字节utf8字符保存方法)
- 干货流出|腾讯内部几近满分的项目管理课程PPT
- 微信公众号禁止浏览器打开
- Android studio百度地图之定位到国外
- APS究竟是什么系统呢?看完文章你就知道了
- 阿里云DDoS防护是如何工作的?
- Soul App打造社交元宇宙,打破次元壁
- 微信html抽奖转盘代码,使用CSS3+jquery.js 实现微信抽奖转盘效果
- 删除 重复数据 mysql_mysql删除重复记录语句的方法
- hadoop-mapreduce-4
- 我的黑群晖学习之旅(1)系统安装篇
- 2022re:Invent:亚马逊云科技拥有强大的云原生数据能力
热门文章
- kurento教程_[译]WEBRTC开发框架Kurento和Jitsi的比较
- 【技术干货】数字电路电平标准
- mysql,oracle数据库优化之索引
- 微服务项目:尚融宝(30)(后端搭建:会员列表搭建(1))
- 【python3数据结构】Dijkstra’s算法(搜索最短路径问题)
- 小红书下架整改:难以把控的UGC
- Redis(超级无敌认真好用,万字收藏篇!!!!)
- ORACLE中ROWNUMBER() OVER( PARTITION BY COL1 ORDER BY COL2)用法
- 经验:ARPG类手游战斗该如何表现?
- E480装Ubuntu16.04历程