背景从一个数据库中导出了 N 个表的 SQL 语句 , 汇总到一个文件夹下 。然后 , 再导入到目标数据库中 。这个过程中 , 如果逐个敲 source 命令太繁琐了 , 不如写个脚本来搞定、顺便练练手 。
本文将介绍一个遍历文件夹下文件的 Shell 应用 。
脚本编写批量导入目标文件夹下的 SQL 文件 , 核心是 , 得到目录下所有 SQL 文件的名称 , 循环执行导入语句 。
所以 , 一个 ls 命令就搞定了 。
curDir=$1cd $curDirecho 'Start import.sql file in directory '$curDirfileTmp=`ls`fileNames=($(echo $fileTmp))for fileName in ${fileNames[@]} doecho 'current file '$fileNameMySQL -h localhost -uroot -p123456 < ./$fileNameecho ''doneecho 'Finished import .sql file.'
脚本分析
- ls 命令输入所有的文件名称;
- 用 $ 命令按空格拆分 , 将 ls 的输出值拆分成数组;
- ${数组名[@]} 将数组扩展成列表 , 用 for in 遍历 。
文章插图
启示录【Shell应用:批量导入SQL文件,你还在复制粘贴文件名?】值得注意的是 , SQL 语句如果是插入操作 , 必须使用 use database; 指定目标数据库 。
其实也就选择地导出了 8 张表的 SQL 语句 , 逐个敲文件名也不是个事儿 , 这也是最简单的处理方法 , 但是这不符合好开发解决问题的风格啊 , 就是一个遍历文件名的命令 , 网上没找到现成的脚本 , 就自己写一个!
写脚本也花了十分钟 , 但好歹比复制粘贴文件名有技术含量得多 , 顺便也练习了一下 Shell 数组的语法 。再说了 , 脚本到了运维同事手里 , 说不定会暗自夸这脚本的作者贴心呢!
推荐阅读
- 线上应用诊断与调试利器——Arthas
- 下一代视频编码技术的云视频应用探索
- 腾讯云快直播——超低延迟直播技术方案及应用
- python:栈的理解与应用
- 光纤收发器的应用与讲解
- 2020年部署Web应用的4种方式
- 到底什么是Hash?Hash算法的原理和实际应用讲解
- 适用于任何设备的屏幕共享应用程序–Mirroring360
- SpringBoot运行源码分析:Spring应用上下文准备
- ICMP协议及应用