使用Shell对MySQL指定的库进行SQL语句批量插入操作
需求:
某环境MySQL数据库中有1000个以yz_xxx
开头命名的库,要求:在所有以yz_xxx
开头命名的库中插入指定的SQL语句。
解决一:
使用Navicat Mysql工具连接到MySQL数据库,点击yz_xxx
开头命名的库,点击查询
—>新建查询
输入指定的SQL语句,每一个库点开运行一共点开1000个库,运行1000个SQL代码。
解决二:使用Shell脚本批量插入SQL语句
尝试分析:
- 使用Linux操作系统远程连接到MySQL数据库
- 通过show databases命令获取到MySQL数据库中所有的库名称
- 获取成功后对所有的库名称通过grep过滤
yz_xxx
开头的库 - 过滤成功后通过for循环语句结合sql代码进行插入操作
- 最后进行验证
1、Shell&使用Linux操作系统远程MySQL数据库
Linux远程MySQL数据库可以使用mysql自带的mysql -e
命令远程对mysql数据库进行操作,所以在本地服务器需要安装MySQL命令或者用centos7版本的操作系统本地自带有mariadb,直接启动就可以使用mysql命令。
代码如下:
#!/bin/bash
# this is a yankerphost_url=129.211.9x.xxx
db_name='yanxxpx'
db_password='pwdxxx'
check_mysql_status=`netstat -anplt | grep mysqld | wc -l`
check_nc_status=`rpm -qa | grep nmap-ncat | wc -l`# 测试是否能够与服务器主机通信
function db_ping(){echo "正在检测与数据库主机连接通信是否正常....."ping -w 1 $host_url &> /dev/nullif [ $? -eq 0 ]thenecho "服务器:$host_url主机可正常连接....."elseecho "ERROR:服务器:$host_url主机连接失败....."return 1fi
}
运行过程:
2、检测本地的Mysql服务是否正常运行
function check_mysql(){echo "---------------------------------------"echo "正在检测本地MySQL数据库是否正常运行....."if [ $check_mysql_status -eq 0 ]thenecho "ERROR:本地MySQL数据库非正常运行,正在启动本地MySQL数据库"systemctl restart mysqldif [ $? -eq 0 ] || [ $check_mysql_status -eq 1 ]thenecho "MySQL数据库启动成功,目前正常运行....."elseecho "ERROR:MySQL启动失败,请及时检测MySQL目前的状态!!!"return 1fielseecho "本地MySQL数据库正常启动中....." fi
}
运行过程1(本地MySQL若正
常启动中的情况下)
运行过程2(本地MySQL非
正常启动中的情况下)
3、检测远程MySQL服务器3306端口是否正常通信
function check_telnet(){if [ $check_nc_status -eq 0 ]thenyum clean all && yum install nmap-ncat -y &> /dev/null &if [ $? -eq 0 ]thenecho "nc命令安装成功!!!"elseecho "ERROR:安装nc包失败,请您检查您服务器是否能够正常上网以及配置yum源!!!"exit 1fielseecho "开始检测$host_url数据库3306端口是否开放...."sleep 2check=`nc -v -z -w 5 $host_url 3306; echo $?` # echo $host_urlif [ $check -eq 0 ]thenecho "远程服务器数据库可正常连接!!!"elseecho "ERROR:请您检查远程服务器的MySQL3306端口是否正常开放!!!"return 1fifi
}
运行过程:
4、连接到远程MySQL进行操作
function connection_mysql(){select_db='show databases;'/usr/local/mysql/bin/mysql -h${host_url} -p${3306} -u${db_name} -p${db_password} -e"${select_db}" > /root/all_database.txt && {cat /root/all_database.txt | grep "yz" > /root/all_gs1.txt}content=`cat /root/all_gs1.txt`SQL_INSERT='' # 在库中需要运行的sql语句for yz in $contentdoecho "正在执行$yz库,正在插入数据库文件!!!"sleep 2/usr/local/mysql/bin/mysql -h${host_url} -p${3306} -u${db_name} -p${db_password} ${yz} -e"${}" &>/dev/nullecho "$yz库运行成功...."echo "===================================================================================================================="done
}
运行过程:
代码注释1:
远程连接到Mysql数据库中,运行一条SQL语句为 show databases;
select_db=show databases;
将查询的结果导出到本地/root/all_database.txt
文本当中(这是所有的库名称)
/usr/local/mysql/bin/mysql -h${host_url} -p${3306} -u${db_name} -p${db_password} -e"${select_db}" > /root/all_database.txt
代码注释2:
查询所有库名称导入到all_database.txt中后通过cat+grep过滤出来yz_的库名称导出到/root/all_gs1.txt
文件中. yz_xxx名字自己定义
cat /root/all_database.txt | grep "yz_" > /root/all_gs1.txt
代码注释3:
将/root/all_gs1.txt 的数据库名称赋值到变量content
中 循环content
中的数据库名称到yz 最后通过mysql -e 指令对数据库进行sql语句插入操作。
content=`cat /root/all_gs1.txt`SQL_INSERT='' # 在库中需要运行的sql语句for yz in $contentdoecho "正在执行$yz库,正在插入数据库文件!!!"sleep 2/usr/local/mysql/bin/mysql -h${host_url} -p${3306} -u${db_name} -p${db_password} ${yz} -e"${SQL_INSERT}" &>/dev/nullecho "$yz库运行成功...."echo "===================================================================================================================="done
我自己的腾讯云服务环境,就不进行插入操作了,大概的流程如下:
附:完整代码段:
#!/bin/bash
# this is a yankerphost_url=目标数据库的IP地址
db_name='目标数据库库用户名'
db_password='目标数据库密码'
check_mysql_status=`netstat -anplt | grep mysqld | wc -l`
check_nc_status=`rpm -qa | grep nmap-ncat | wc -l`# 测试是否能够与服务器主机通信
function db_ping(){echo "正在检测与数据库主机连接通信是否正常....."ping -w 1 $host_url &> /dev/nullif [ $? -eq 0 ]thenecho "服务器:$host_url主机可正常连接....."elseecho "ERROR:服务器:$host_url主机连接失败....."return 1fi
}function check_mysql(){echo "---------------------------------------"echo "正在检测本地MySQL数据库是否正常运行....."if [ $check_mysql_status -eq 0 ]thenecho "ERROR:本地MySQL数据库非正常运行,正在启动本地MySQL数据库"systemctl restart mysqldif [ $? -eq 0 ] || [ $check_mysql_status -eq 1 ]thenecho "MySQL数据库启动成功,目前正常运行....."elseecho "ERROR:MySQL启动失败,请及时检测MySQL目前的状态!!!"return 1fielseecho "本地MySQL数据库正常启动中....." fi
}function check_telnet(){if [ $check_nc_status -eq 0 ]thenyum clean all && yum install nmap-ncat -y &> /dev/null &if [ $? -eq 0 ]thenecho "nc命令安装成功!!!"elseecho "ERROR:安装nc包失败,请您检查您服务器是否能够正常上网以及配置yum源!!!"exit 1fielseecho "开始检测$host_url数据库3306端口是否开放...."sleep 2check=`nc -v -z -w 5 $host_url 3306; echo $?` # echo $host_urlif [ $check -eq 0 ]thenecho "远程服务器数据库可正常连接!!!"elseecho "ERROR:请您检查远程服务器的MySQL3306端口是否正常开放!!!"return 1fifi
}function connection_mysql(){select_db='show databases;'/usr/local/mysql/bin/mysql -h${host_url} -p${3306} -u${db_name} -p${db_password} -e"${select_db}" > /root/all_database.txt && {cat /root/all_database.txt | grep "yz" > /root/all_gs1.txt}content=`cat /root/all_gs1.txt`SQL_INSERT='' # 在库中需要运行的sql语句for yz in $contentdoecho "正在执行$yz库,正在插入数据库文件!!!"sleep 2#/usr/local/mysql/bin/mysql -h${host_url} -p${3306} -u${db_name} -p${db_password} ${yz} -e"${}" &>/dev/nullecho "当你看到这条信息就是正在插入$yz库。。。。。。。。"echo "$yz库运行成功...."echo "===================================================================================================================="done
}function main(){db_pingcheck_mysqlcheck_telnetconnection_mysql
}main
完整运行过程:
在此记录,希望对您有所帮助,再见~
使用Shell对MySQL指定的库进行SQL语句批量插入操作相关推荐
- mysql新增,更新,批量插入操作
mysql新增和更新操作 一.Insert的几种语法 例子: CREATE TABLE `users` (`id` int(11) NOT NULL AUTO_INCREMENT,`username` ...
- mysql查阅某个日期的语句_mysql查询指定日期时间内的sql语句及原理
查询指定日期时间内的sql语句的实现原理: 如果是月份就是当前的月减去你要统计的时间,比如要查询数据库中从今天起往前三个月的所有记录. 另外,在数据库设计阶段,要注意时间字段为int(11),保存在数 ...
- c mysql查询年月日_mysql查询指定日期时间内的sql语句及原理
查询指定日期时间内的sql语句的实现原理: 如果是月份就是当前的月减去你要统计的时间,比如要查询数据库中从今天起往前三个月的所有记录. 另外,在数据库设计阶段,要注意时间字段为int(11),保存在数 ...
- 详解MySQL的逻辑架构和SQL语句执行流程
文章目录 1. 逻辑架构 1.1 连接层 1.2 服务层 1.3 引擎层 1.3.1 InnoDB 存储引擎 1.3.2 MyISAM 存储引擎 1.3.3 其他存储引擎 1.4 存储层 3. SQL ...
- 如何在mysql查找效率慢的SQL语句
如何在mysql查找效率慢的SQL语句呢?这可能是困然很多人的一个问题,MySQL通过慢查询日志定位那些执行效率较低的SQL 语句,用--log-slow-queries[=file_name]选项启 ...
- mysql命令书写顺序_MySQL SQL语句书写顺序和执行顺序
SQL语句书写顺序和执行顺序 (7) SELECT (8) DISTINCT (1) FROM (3) JOIN (2) ON (4) WHERE (5) GROUP BY (6) HAVING (9 ...
- 会mysql不会sql_不是吧,不会有人还不知道MySQL中具实用的SQL语句
原标题:不是吧,不会有人还不知道MySQL中具实用的SQL语句 目录 实用的SQL 1.插入或替换 2.插入或更新 3.插入或忽略 4.SQL中的if-else判断语句 5.指定数据快照或备份 6.写 ...
- 两种方式:mysql查看正在执行的sql语句
mysql查看正在执行的sql语句 2015年08月21日 17:32:59 阅读数:15398 有2个方法: 1.使用processlist,但是有个弊端,就是只能查看正在执行的sql语句,对应历史 ...
- mysql面试题sql语句_数据库MySQL经典面试题之SQL语句
数据库MySQL经典面试题之SQL语句 1.需要数据库表1.学生表 Student(SID,Sname,Sage,Ssex) --SID 学生编号,Sname 学生姓名,Sage 出生年月,Ssex ...
最新文章
- 开始喜欢Python了
- IntelliJ IDEA给Serializable类加上自动的serialVersionUID
- python结构模式图_NetworkX:Python图与网络模型基础
- MySQL 第二次练习(源码安装、数据库和表的建立)
- java 检测ip网速_使用Speedtest CLI测试你的网速
- Tuxedo中间件学习
- 立创开源 | 基于stm32的稳定输出9v的双向DCDC自动稳压系统
- 英伟达驱动更新记录_英伟达更新驱动最好的方式 - 卡饭网
- 如何免费申请博客 用WordPress建设网站
- 测试专业相机快门软件,检测快门次数软件 快门数量检测
- 产品读书《谷歌和亚马逊如何做产品》
- rar压缩包解开加密在线,忘记rar压缩包密码如何找回?
- JAVA-国密算法SM3和SM4应用Example
- 学Java好还是学前端好?Java和Web前端哪个更吃香?
- 【Spring】IoC与AOP
- 剪辑视频怎么学?手把手教你自学视频剪辑
- Ubuntu设置终端打开时的默认窗口大小和位置坐标
- 关于如何租一个云服务器进行使用
- MATLAB画带延时系统的伯德图
- 计算机学报杂志官网在线出版,计算机学报
热门文章
- 数学建模多元线性回归内生性问题的蒙特卡洛模拟matlab代码
- 如何在极速PDF编辑器中调整PDF视图?
- 华为2016开发者大赛:赢的不仅仅是百万元奖金
- piu.tw login.php,2020NPUCTF公开赛 WEB部分Writeup
- 禁止ios浏览器页面滚动的橡皮筋效果
- Python 图片转ICO
- MybatisPlus出现Error querying database. Cause: java.lang.IndexOutOfBoundsException问题
- 索尼黑卡相机Sony Rx100-M3与手机互联APP相关问题
- 我们的大脑,足以理解大脑本身吗?
- ABAP 创建Rest接口实例