探寻后端技术之广之深
vim高效使用实例之批量生成Sql

场景描述

pm同学给了一个网站管理员名单文本文件,每行一个名字,要求帮忙把这些管理员入库。

分析

可以通过写代码,读取文件进行入库,无论用什么语言,这代码逻辑都很容易实现。唯一的问题是代码需要上线后执行,每次上线可是一个大工程,恐怕会被pm同学嘲笑说:“你这技术导入也比我在后台手工录入快不了多少嘛”。
既然上线流程慢,那就绕过去上线,直接写sql,然后用有主库写权限的账号执行sql插入,那现在问题就变为怎么快速的写出sql。

Vim出场

需要实现的就是把如下文件内容

name1
name12
name123
name1234
……

变为一条条sql语句,如下:

insert into admin (name) values ('name1');
insert into admin (name) values ('name2');
insert into admin (name) values ('name3');
insert into admin (name) values ('name4');

实现步骤

1.首先在每行行尾加上 “ '); ”这三个字符,使用vim的替换命令即可,命令为:

:%s/\n/');\r/g

:” 表示进入底线命令模式

%s” 表示针对全文有效,相应的如果只对当前行或者选中行有效,则用”s“

后面格式就是/old_string/new_string/g。

\n”是old_string,表示要替换掉的旧字符串,此处表示换行符

');\r ” 是new_sting,表示要替换为的新字符串,其中\r也表示新一行

最后的“g” 是额外参数,表示对每行而言是全部替换,如果没有此参数,则只会针对每行的第一个old_string进行替换。

执行此命令后,文本变为:

name1');
name2');
name3');
name4');

2.在每行前面加上“insert into admin (name) values ('”。
1)按键“0”将鼠标游标定位到第一行第一列
2)同时按“ctrl+v”进入纵向编辑模式
3)按键“j”或者下箭头到最后一行,这样就选中了所有行的行首字符file
4)按键“I”在选中的字符前进行插入file
5)输入“insert into admin (name) values ('”;
6)按键“esc”你就会神奇的发现,所有选择的行首都插入了insert语句。


nginx公众号也会推送好文,主要聊聊后端技术,扫描或者搜索nginx即可添加。 nginx公众号

暂无评论~~