前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >vim神奇高效功能--批量生成Sql实例

vim神奇高效功能--批量生成Sql实例

作者头像
后端技术探索
发布2018-08-10 12:04:21
5960
发布2018-08-10 12:04:21
举报
文章被收录于专栏:后端技术探索

场景描述

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

分析

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

Vim出场

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

代码语言:javascript
复制
name1
name12
name123
name1234
……

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

代码语言:javascript
复制
insert into admin (name) values ('name1');
insert into admin (name) values ('name12');
insert into admin (name) values ('name123');
insert into admin (name) values ('name1234');

实现步骤

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

代码语言:javascript
复制
:%s/\n/');\r/g

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

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

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

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

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

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

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

代码语言:javascript
复制
name1');
name2');
name3');
name4');

2. 在每行前面加上“insert into admin (name) values ('”。 1)按键“0”将鼠标游标定位到第一行第一列。 2)同时按“ctrl+v”进入纵向编辑模式。 3)按键“j”或者下箭头到最后一行,这样就选中了所有行的行首字符。

4)按键“I”在选中的字符前进行插入。

5)输入“insert into admin (name) values ('”。 6)按键“esc”你就会神奇的发现,所有选择的行首都插入了insert语句。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-06-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 nginx 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 场景描述
  • 分析
  • Vim出场
  • 实现步骤
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档