Bash中读写MySQL数据库
来源:互联网 发布:功能薄膜材料知乎 编辑:程序博客网 时间:2024/06/13 21:50
有一份包含学生详细信息的CSV文件,需要将文件的内容插入到一个数据表中。保证为每一个系生成一个单独的排名列表。
编写三个脚本,分别用于创建数据库及数据表、向数据表中插入学生数据、从数据表中读取并显示处理过的数据。
编写三个脚本,分别用于创建数据库及数据表、向数据表中插入学生数据、从数据表中读取并显示处理过的数据。
创建数据库及数据表:
#!/bin/bashUSER="root"PASS="900212"mysql -u $USER -p$PASS <<EOF 2> /dev/nullCREATE DATABASE students;EOF[ $? -eq 0 ] $$ echo Create DB || echo DB already existmysql -u $USER -p$PASS students <<EOF 2> /dev/nullCREATE TABLE students(id int,name varchar(100),mark int,dept varchar(4));EOF[ $? -eq 0 ] && echo Created table students || echo Table students already existmysql -u $USER -p$PASS students <<EOFDELETE FROM students;EOF
<<EOF EOF之间的文本被作为mysql的标准输入,$?检查mysql命令的退出状态。
将数据插入数据表的脚本:
#!/bin/bashUSER="root"PASS="900212"if [ $# -ne 1 ];then echo $0 DATAFILE echo exit 2fidata=$1while read line;do oldIFS=$IFS IFS=, values=($line) values[1]="\"`echo ${values[1]} | tr ' ' '#'`\"" values[3]="\"`echo ${values[3]}`\"" query=`echo ${values[@]} | tr ' #' ', ' ` IFS=$oldIFS mysql -u $USER -p$PASS students <<EOFINSERT INTO students VALUES($query);EOFdone< $dataecho Wrote data into DB
为了引用字符串,数组中的值要加上\"作为前缀和后缀。
查询数据库的脚本:
#!/bin/bashUSER="root"PASS="900212"if [ $# -ne 1 ];then echo $0 DATAFILE echo exit 2fidata=$1while read line;do oldIFS=$IFS IFS=, values=($line) values[1]="\"`echo ${values[1]} | tr ' ' '#'`\"" values[3]="\"`echo ${values[3]}`\"" query=`echo ${values[@]} | tr ' #' ', ' ` IFS=$oldIFS mysql -u $USER -p$PASS students <<EOFINSERT INTO students VALUES($query);EOFdone< $dataecho Wrote data into DBroot@ubuntu:/home/qixuan/qixuan02/shell# cat read_db.sh #!/bin/bashUSER="root"PASS="900212"depts=`mysql -u $USER -p$PASS students <<EOF | tail -n +2SELECT DISTINCT dept FROM students;EOF`for d in $depts;doecho Department : $dresult="`mysql -u $USER -p$PASS students <<EOFSET @i:=0;SELECT @i:=@i+1 as rank,name,mark FROM students WHERE dept="$d" ORDER BY mark DESC;EOF`"echo "$result"echodone
SET @i:=0是一个SQL构件,用来设置变量i=0。在每行中,变量i都会增加并作为学生排名来显示。
作为输入的CSV文件(studentdata.csv):1,Navin M,98,CS2,Kavya N,70,CS3,Nawaz O,80,CS4,Hari S,80,EC5,Alex M,50,EC6,Neenu J,70,EC7,Bob A,30,EC8,Anu M,90,AE9,Sruthi,89,AE10,Andrew,89,AE接下来进行实验操作:
登录到mysql中检查也是如此:
0 0
- Bash中读写MySQL数据库
- 使用bash将csv文件数据读写到MySQL数据库的脚本之一
- Shell(Bash) - mysql数据库操作
- Shell(Bash) - mysql数据库操作
- Hibernate读写MySQL数据库
- mysql数据库读写分离
- MySQL数据库读写分离
- MySQL数据库读写分离
- mysql数据库读写分离
- mysql数据库读写分离
- MySQL数据库读写分离
- java读写Mysql数据库乱码
- PHP MySQL读写数据库乱码
- MySQL数据库读写分离配置
- mysql数据库实现读写分离
- mysql spring 数据库读写分离
- 从数据库中读写图片
- android数据库中读写cookie
- 近些时候的问题
- shell教程八:except脚本 实现无密登录
- nctf-web
- java垃圾收集器与内存分配策略
- Leetcode 48. Rotate Image
- Bash中读写MySQL数据库
- 初学Qt之--在Qt中调用外部C语言模块
- Xamarin.android Intent传递对象
- poj-1905-Expanding Rods
- C# 文件更改扩展名
- iOS开发之网络请求
- Android之Intent深入
- caffe中cifar10的full_train模型出现nan的解决办法
- Spring学习——(五)Spring中数据源的配置