linux:使用shell读写MySQL数据库

51 篇文章 5 订阅
35 篇文章 0 订阅
linux:使用shell读写MySQL数据库

本文用一个示例,简单演示了如何使用shell脚本读写MySQL数据库。

主要工作如下:
1. 创建数据库sample
create database sample;

2. 创建表employee
drop table if exists employee;
create table employee(EMPNO char(6), FIRSTNME varchar(12), JOB char(8));

3. 从以下文件中读取内容,并按行插入表employee中
/tmp/info.txt
000010 CHRISTINE PRES
000020 MICHAEL MANAGER
000030 SALLY DESIGNER
000050 JOHN MANAGER
000060 IRVING DESIGNER
000070 EVA CLERK
000090 EILEEN SALESREP

4.查询表employee
select * from employee;

脚本内容如下:

qingsong@db2a:/tmp$ cat mysql.sh

#!/bin/bash
#filename:mysql.sh

username=root
passwd=qingsong

# 1. create db 
mysql -u $username -p$passwd <<EOF 2> /dev/null
create database sample;
EOF

[ $? -eq 0 ] && echo "create db sample succeed" || echo "DB sample already exist"

# 2. create table
mysql -u $username -p$passwd sample <<EOF 2> /dev/null
drop table if exists employee;
EOF

mysql -u $username -p$passwd sample <<EOF 2> /dev/null
create table employee(EMPNO char(6), FIRSTNME varchar(12), JOB char(8));
EOF

[ $? -eq 0 ] && echo "create table employee succeed" || echo "Create table employee succeed"

# 3. insert data
while read line
do
        empno=`echo $line | awk '{print $1}'`
        firstname=`echo $line | awk '{print $2}'`
        job=`echo $line | awk '{print $3}'`
        query=`echo "'"$empno"'","'"$firstname"'","'"$job"'"`

        mysql -u $username -p$passwd sample <<EOF 2> /dev/null
insert into employee values($query);
EOF

        [ $? -eq 0 ] && echo "Insert succeed on empno $empno" || echo "Insert failed on empno $empno"

done < /tmp/info.txt

# 4. select data

echo "Data from table employee"
mysql -u $username -p$passwd sample <<EOF 2> /dev/null
select * from employee;
EOF

运行效果:
qingsong@db2a:/tmp$ bash mysql.sh
DB sample already exist
create table employee succeed
Insert succeed on empno 000010
Insert succeed on empno 000020
Insert succeed on empno 000030
Insert succeed on empno 000050
Insert succeed on empno 000060
Insert succeed on empno 000070
Insert succeed on empno 000090
Data from table employee
EMPNO FIRSTNME JOB
000010 CHRISTINE PRES
000020 MICHAEL MANAGER
000030 SALLY DESIGNER
000050 JOHN MANAGER
000060 IRVING DESIGNER
000070 EVA CLERK
000090 EILEEN SALESREP

脚本的一些说明:

说明1
第3步, insert data中,有这么一行:
query=`echo "'"$empno"'","'"$firstname"'","'"$job"'"`
原因是employee表的三个字段都是char或者varchar型的,插入的时候两边要加上单引号

说明2
每一个EOF必须要在行首,即不能缩进

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值