安装mariadb 数据库  (默认没有密码,直接mysql即可进入数据库管理控制台)

  1. yum install mariadb mariadb-server mariadb-libs -y
  2. systemctl start mariadb
  3. netstat -tnlp |grep :3306

新建数据库

  1. create database school default character set utf8;
  1. CREATE TABLE student(
  2. s_id varchar(),
  3. s_name varchar() not null default '',
  4. s_birth varchar() not null default '',
  5. s_sex varchar() not null default '',
  6. primary key(s_id)
  7. );
  8.  
  9. --课程表
  10. create table course(
  11. c_id varchar(),
  12. c_name varchar() not null default '',
  13. t_id varchar() not null,
  14. primary key(c_id)
  15. );
  16.  
  17. --教师表
  18. create table teacher(
  19. t_id varchar(),
  20. t_name varchar() not null default '',
  21. primary key(t_id)
  22. );
  23.  
  24. --成绩表
  25. create table score(
  26. s_id varchar(),
  27. c_id varchar(),
  28. s_score int(),
  29. primary key(s_id,c_id)
  30. );
  31.  
  32. --插入学生测试数据
  33. insert into student values('','zhaolei','1990-1001-1001','male');
  34. insert into student values('','lihang','1990-12-21','male');
  35. insert into student values('','yanwen','1990-1005-20','male');
  36. insert into student values('','hongfei','1990-1008-1006','male');
  37. insert into student values('','ligang','1991-12-1001','male');
  38. insert into student values('','zhousheng','1992-1003-1001','male');
  39. insert into student values('','wangjun','1989-1007-1001','male');
  40. insert into student values('','zhoufei','1990-1001-20','male');
  41.  
  42. --课程表测试数据
  43. insert into course values('','chinese','');
  44. insert into course values('','math','');
  45. insert into course values('','english','');
  46.  
  47. --教师表测试数据
  48. insert into teacher values('', 'aidisheng');
  49. insert into teacher values('', 'aiyinsitan');
  50. insert into teacher values('', 'qiansanqiang');
  51.  
  52. --成绩表测试
  53. insert into score values('','',);
  54. insert into score values('','',);
  55. insert into score values('','',);
  56.  
  57. insert into score values('','',);
  58. insert into score values('','',);
  59. insert into score values('','',);
  60.  
  61. insert into score values('','',);
  62. insert into score values('','',);
  63. insert into score values('','',);
  64.  
  65. insert into score values('','',);
  66. insert into score values('','',);
  67. insert into score values('','',);
  68.  
  69. insert into score values('','',);
  70. insert into score values('','',);
  71.  
  72. insert into score values('','',);
  73. insert into score values('','',);
  74.  
  75. insert into score values('','',);
  76. insert into score values('','',);

school.sql

导入数据

  1. mysql school < school.sql

mysql 常用选项

mysql命令参数详解

  1. -u 用户名
  2. -p 用户密码
  3. -h 服务器ip地址
  4. -D 连接的数据库
  5. -N 不输出列信息
  6. -B 使用tab键代替默认交互分隔符
  7. -e 执行sql语句
  8.  
  9. 其他选项
  10. -E 垂直输出
  11. -H HTML格式输出
  12. -X XML格式输出

-D 指定数据库  -e 不用交互模式

  1. mysql -D school -e "select * from student;";

-N 不显示列信息,-B 去除多余信息, -D 指定操作的数据库

  1. mysql -B -N -D school -e "select * from student;";

-E 垂直显示

  1. mysql -E -B -N -D school -e "select * from student;";

-H 以HTML格式显示

  1. mysql -H -B -N -D school -e "select * from student;";

-X 以xml格式显示

  1. mysql -X -B -N -D school -e "select * from student;" > result.xml

在 shell 脚本中操作mysql 数据库  

operate_mysql.sh

  1. #!/bin/bash
  2. #
  3.  
  4. user="dbuser"
  5. password="123456"
  6. host="10.11.0.215"
  7. db_name="$1"
  8.  
  9. SQL="$2"
  10.  
  11. mysql -h"$host" -u"$user" -p"$password" -D"$1" -B -e "$SQL"

执行 sql 语句

  1. sh operate_mysql.sh school "select * from score"

插入数据

  1. sh operate_mysql.sh school "insert into score values('1020','1002','100');"
  2. sh operate_mysql.sh school "select * from score"

导出txt文本,-B去掉多余的符号可以导入到excel表格中

  1. sh operate_mysql.sh school "select * from score" > result.txt

利用shell脚本将文本数据导入到mysql中

创建表结构和student一样结构的student1表

  1. create table student1 like student;

data.txt

  1. 1010 jerry 1991-12-13 male
  2. 1011 mike 1991-12-13 female
  3. 1012 tracy 1991-12-13 male
  4. 1013 kobe 1991-12-13 male
  5. 1014 allen 1991-12-13 female
  6. 1015 curry 1991-12-13 male
  7. 1016 tom 1991-12-13 female

编写导入数据脚本 import_mysql.sh

  1. #!/bin/bash
  2. #
  3.  
  4. user="dbuser"
  5. password="123456"
  6. host="10.11.0.215"
  7.  
  8. mysql_conn="mysql -h"$host" -u"$user" -p"$password""
  9.  
  10. cat data.txt | while read id name birth sex
  11. do
  12. $mysql_conn -e "INSERT INTO school.student1 values('$id','$name','$birth','$sex')"
  13. done

 

执行脚本

  1. sh import_mysql.sh

导入数据可以用load,有时候有一些特殊需求比如插入s_id大于1014的行,这个时候就需要使用 shell 语句进行过滤了

import_mysql.sh

  1. #!/bin/bash
  2. #
  3.  
  4. user="dbuser"
  5. password="123456"
  6. host="10.11.0.215"
  7.  
  8. mysql_conn="mysql -h"$host" -u"$user" -p"$password""
  9.  
  10. cat data.txt | while read id name birth sex
  11. do
  12. # 有插入条件
  13. if [ $id -gt 1014 ];then
  14. $mysql_conn -e "INSERT INTO school.student1 values('$id','$name','$birth','$sex')"
  15. fi
  16. done

执行脚本

  1. sh import_mysql.sh
  2. sh operate_mysql.sh school "select * from student1"

需求2:

data2.txt

  1. 2021|hao|1989-12-21|male
  2. 2022|zhang|1989-12-21|male
  3. 2023|ouyang|1989-12-21|male
  4. 2024|li|1989-12-21|female

cat import_mysql-2.sh

  1. #!/bin/bash
  2. #
  3.  
  4. user="dbuser"
  5. password="123456"
  6. host="10.11.0.215"
  7.  
  8. # IFS是系统自带的变量,分隔符 input filre saperator
  9. IFS="|"
  10.  
  11. cat data2.txt | while read id name birth sex
  12. do
  13. # 注意,当使用|类似这种特殊符号时,需要将mysql命令不写成命令,否则会报错
  14. mysql -u"$user" -p"$password" -h"$host" -e "INSERT INTO school.student2 values('$id','$name','$birth','$sex')"
  15. done
  16. #
  17.  
  18. # 使用冒号: 分隔也没有问题

  

执行脚本  

  1. sh import_mysql-2.sh
  2. sh operate_mysql.sh school "select * from student2"

data3.txt

  1. 2025:hao:1989-12-21:male
  2. 2026:zhang:1989-12-21:male
  3. 2027:ouyang:1989-12-21:male
  4. 2028:li:1989-12-21:female 

import_mysql-2.sh

  1. #!/bin/bash
  2. #
  3.  
  4. user="dbuser"
  5. password="123456"
  6. host="10.11.0.215"
  7.  
  8. #mysql_conn="mysql -h"$host" -u"$user" -p"$password""
  9.  
  10. # IFS是系统自带的变量,分隔符 input filre saperator
  11. IFS=":"
  12.  
  13. cat data3.txt | while read id name birth sex
  14. do
  15. mysql -u"$user" -p"$password" -h"$host" -e "INSERT INTO school.student2 values('$id','$name','$birth','$sex')"
  16. done

执行脚本

  1. sh import_mysql-2.sh
  2. sh operate_mysql.sh school "select * from student2"

  

Shell 脚本操作数据库实战的更多相关文章

  1. shell脚本操作数据库

    #!/bin/bash HOST_NAME="localhost" PORT=3306 USERNAME="root" PASSWORD="root& ...

  2. shell编程系列24--shell操作数据库实战之利用shell脚本将文本数据导入到mysql中

    shell编程系列24--shell操作数据库实战之利用shell脚本将文本数据导入到mysql中 利用shell脚本将文本数据导入到mysql中 需求1:处理文本中的数据,将文本中的数据插入到mys ...

  3. shell编程系列22--shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查)

    shell编程系列22--shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查) Shell脚本与MySQL数据库交互(增删改查) # 环境准备:安装mariadb 数据库 [ro ...

  4. shell编程系列25--shell操作数据库实战之备份MySQL数据,并通过FTP将其传输到远端主机

    shell编程系列25--shell操作数据库实战之备份MySQL数据,并通过FTP将其传输到远端主机 备份mysql中的库或者表 mysqldump 常用参数详解: -u 用户名 -p 密码 -h ...

  5. shell编程系列23--shell操作数据库实战之mysql命令参数详解

    shell编程系列23--shell操作数据库实战之mysql命令参数详解 mysql命令参数详解 -u 用户名 -p 用户密码 -h 服务器ip地址 -D 连接的数据库 -N 不输出列信息 -B 使 ...

  6. shell脚本操作mysql数据库

    shell脚本操作mysql数据库,使用mysql的-e参数可以执行各种sql的(创建,删除,增,删,改.查)等各种操作 mysql  -hhostname -Pport -uusername -pp ...

  7. shell 脚本操作informix数据库

    shell 脚本操作informix数据库的简单模板: functionName(){ dbaccess << ! database 库名; sql语句; ! } 栗子1:更新数据 fun ...

  8. shell脚本操作mysql库

    shell脚本操作mysql数据库-e参数执行各种sql(指定到处编码--default-character-set=utf8 -s,去掉第一行的字段名称信息-N) 2011-05-11 18:18: ...

  9. Saiku数据库迁移后的刷新脚本-Shell脚本读取数据库中的数据(二十三)

    Saiku数据库迁移后的刷新脚本 之前有谈过对saiku中的数据进行刷新,因为saiku默认会从缓存中查询数据,但是配置不使用缓存又会效率低下... 所以这里就需要做一个数据刷新,每次ETL之后都需要 ...

随机推荐

  1. SQLite带参数处理方法

    /// <summary> /// 执行语法[新增 修改 删除] /// </summary> /// <param name="sqlText"&g ...

  2. [转]Microsoft VS Code 改变默认文字编码

    概要:文件->首选项->设置 输入: "files.autoGuessEncoding": true, 然后勾上. 链接地址:https://jingyan.baidu ...

  3. MySQL普通索引性能试验

    首先使用如下node.js脚本创建两张表,并为这两张表各自生成10000条数据: var fs = require('fs'); var nameS = "赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱 ...

  4. 基于libuv的TCP设计(二)

    一.本人设想的TCP服务器有如下特性: 1.启动服务,一直监听端口. 2.有新连接(客户端)就通知用户.并把连接接收到的数据回调给用户. 3.客户端连接上后用户可在任意时间发送数据给它. 4.客户端断 ...

  5. Ubuntu中打开Qt creator,提示无法覆盖文件 /home/username/.config/Nokia/qtversion.xml : Permission denied

    官网下载qt*.run文件安装后 打开Qt creator,提示无法覆盖文件 /home/username/.config/Nokia/qtversion.xml : Permission denie ...

  6. LeetCode 617. 合并二叉树(Merge Two Binary Trees)

    617. 合并二叉树 617. Merge Two Binary Trees 题目描述 给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠. 你需要将他们合并为一个新 ...

  7. 【转帖】2019年中国5G行业细分市场发展现状和市场前景分析 通信基站数量快速增长

    2019年中国5G行业细分市场发展现状和市场前景分析 通信基站数量快速增长 中国有 600多万个基站 平均每200个人 一个基站.. 一个基站十万块钱的话 相当于 每个人 需要分摊 500块钱. ht ...

  8. ElasticSearch RestHighLevelClient 通用操作

    项目中使用到ElasticSearch作为搜索引擎.而ES的环境搭建自然是十分简单,且本身就适应于分布式环境,因此这块就不多赘述.而其本身特性和查询语句这篇博文不会介绍,如果有机会会深入介绍. ​ 所 ...

  9. Struts笔记4

    Struts2-拦截器-单个拦截器 自定义拦截器 1.创建一个继承AbstractInterceptor的类 package com.gyf.web.interceptor; import com.o ...

  10. STM32之SPI时钟相位选择

    SPI的时钟模式分为四种,由SPI_CR1寄存器的两位CPOL,CPHA组合选择. CPOL 如果为1,则时钟的空闲电平为高电平:CPOL 如果为0,则时钟的空闲电平为低电平.空闲电平影响不大. CP ...