在shell脚本中连接mysql并进行相关操作
短信预约 -IT技能 免费直播动态提醒
在实际使用中,有时候需要定时的对数据库进行一些重复的操作。这样通过脚本的方式能更好的降低出错率并提高速度
连接数据库,我们可以封装一个函数来操作。方便进行数据的传递。将相关参数进度对应的传递。分析脚本我们可以知道就是将sql脚本以here文档的格式传递给mysql。
do_mysql(){ mysql -h${host} -P${port} -u${account} -p${password} -D${database} -N -r -B << EOF ${1}EOF }
那么我们就可以使用另一种直接传递文件的格式去传递sql语句
mysql -u ${account} -p${password} < table.sql
sql脚本的内容: use test; INSERT INTO media_session_20220831 (`session`, `meida_type`) VALUES(181026278212063, 'video');
对比会发现直接写在shell里的语句还是有区别的。在shell脚本中。符合’`'引起来的东西会被当做命令去解析。
也可以这样
echo "show databases;" | mysql -uroot -p123456
读取文件内容的方式,通过while循环实现
while read linedo echo $line media_type=`echo $line|awk '{print $2}'`done < media_session.txt
- 每次读取文件的一行信息
- 行信息中列信息的获取使用awk来实现
整体的使用方式
#!/bin/bash#连接mysqldatabase=testhost=ipport=3306account=rootpassword=passwordtable_media=media_session_$(date +%Y%m%d)table_data=statics_data_$(date +%Y%m%d)#txt数据文件的路径及文件名script=${1:-"media_session.txt"}do_mysql(){ mysql -h${host} -P${port} -u${account} -p${password} -D${database} -N -r -B << EOF ${1}EOF }#连接数据库并执行create_tables(){mysql -u ${account} -p${password} <<EOF use ${database};CREATE TABLE ${table_media} (session varchar(255) COLLATE utf8_bin DEFAULT NULL,meida_type varchar(255) COLLATE utf8_bin DEFAULT NULL,id bigint(12) NOT NULL AUTO_INCREMENT,PRIMARY KEY (id))ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;;show tables;EOF}# 插入session和media的关系insert_data(){while read linedo media_type=`echo $line|awk '{print $2}'` session=`echo $line|awk '{print $1}'` # echo ${session}# echo ${media_type} do_mysql "INSERT INTO ${table_media} (session, meida_type) VALUES(${session}, '${media_type}');"done < ${script}}# 生成数据static_data(){do_mysql "CREATE TABLE ${table_data} as select a.session '会话id',case b.dial_type when 1 then '外呼'when 2 then '入呼' else '其他' end '呼叫类型',b.ani '主叫',b.dnis '被叫',b.meeting_create_time '呼叫时间',case a.meida_type when 'audio' then '音频' when 'video' then '视频' else '其他' end '媒体类型' from test.${table_media} a left join vcc.t_meeting_detail b on a.session=b.session_id;"}create_tablesinsert_datastatic_data
来源地址:https://blog.csdn.net/jjt_zaj/article/details/126638980
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341