shell操作mysql

参考文章:shell脚本操作MYSQL(1)

shell操作mysql主要有两种方式:

  1. 直接链接数据库并且执行sql。
  2. 不执行sql,而是连接数据库,使用<<EOF将后面的语句作为输入执行。

直接执行

# 执行sql脚本
sql="source /root/test.sql"

# 创建数据库
sql="create database IF NOT EXISTS ${DBNAME};"

# 创建表
sql="create table IF NOT EXISTS ${TABLENAME} ( name varchar(20), id int(11) default 0 )"

# 插入数据
sql="insert into ${TABLENAME} values('billchen',2)"

# 查询数据
sql="select * from ${TABLENAME}"

# 更新数据
sql="update ${TABLENAME} set id=3"

# 删除数据
sql="delete from ${TABLENAME}"

mysql -h${HOSTNAME}  -P${PORT}  -u${USERNAME} -p${PASSWORD} -e "${sql}"

通过EOF执行

PORTAL_META_SQL="update apolloportaldb.serverconfig set value=${META} where \`key\`='apollo.portal.meta.servers';"

#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);

# 一个实际使用过的实例
$PORTAL_META_SQL

注意点

通过 shell 操作 mysql ,有一些需要注意的点。

  1. 条件可直接拼接在sql后。
  2. 字段值需要引号。
  3. 与mysql关键字同名时,需要使用 \ 转义。

EOF

CONDITION='a = 1 and b = 2'
COLUMNVALUE='21314'

mysql -h${HOSTNAME}  -P${PORT}  -u${USERNAME} -p${PASSWORD}<<EOF
use ${DBNAME}
 
#如果是条件,可直接拼接在sql后
select * from test_table_test where ${CONDITION};
 
#如果是字段值.需要引号
select * from test_table where a = '${COLUMNVALUE}'

#如果test_table表中有一个字段名叫system,则查询时需要使用\转意
select \`system\` from test_table_test;

# key为关键字,使用 \ 进行转义
update test_table set value='${env}' where \`key\`='abc';
EOF
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tlqwanttolearnit

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值