shell逐行读取excel并执行sql
项目场景:
项目场景:测试想根据一组id
获取name
做测试,由于各种原因(数据量大,sql
语句复杂),只能根据id
一条条查,于是写了个脚本:
解决方案一:
- 先查询需要的
id
导出到user_id.csv
文件
[root@VM-4-13-centos 0903]# cat user_id.csv
1
2
3
- 脚本(示例):
#!/bin/bash
cat user_id.csv | while read line
do
#打印每一行数据
echo "userId is : ${line}"
#编写SQL
sql="select id,name from test_2.student where id=${line} limit 1"
cnt=$(mysql -h127.0.0.1 -uroot -ppassword -s -e "${sql}" 2>/dev/null | grep -v cnt )
if [[ -z "$cnt" ]]
then
echo result is null
continue
fi
echo ${cnt} >> ok.txt
done
测试结果:
[root@VM-4-13-centos 0903]# sh test.sh
userId is : 1
userId is : 2
userId is : 3
[root@VM-4-13-centos 0903]# ls
ok.txt test.sh user_id.csv
[root@VM-4-13-centos 0903]# cat ok.txt
1 白杰
2 连宇栋
3 邸志伟
跟数据库对比发现结果一致
解决方案二:
上面的方案因为需要每次跟数据库交互,因此时间花费很长。除非对时间不关心且每次生成的文件不一样可以使用,一般都使用数据库
in
关键字来解决这类问题。
- 使用
Notepad
或者其他可以列运算的工具。这里以Notepad
为例,按住ALT
,鼠标向下滑动,选中需要改动的所有列。
- 然后拼接SQL语句
select id,name
from test_2.student
where id in('1',
'2',
'3');
- 测试结果
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgebihh
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01