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

场景描述

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

分析

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

Vim出场

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

name1
name12
name123
name1234
……

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

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的替换命令即可,命令为:

:%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”或者下箭头到最后一行,这样就选中了所有行的行首字符。

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

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

原文发布于微信公众号 - nginx(nginx-study)

原文发表时间:2018-06-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java技术分享

Redis特性和应用场景

Redis特性 速度快 Redis使用标准C编写实现,而且将所有数据加载到内存中,所以速度非常快。官方提供的数据表明,在一个普通的Linux机器上,Redis读...

1.1K7
来自专栏专注 Java 基础分享

Java并发之线程间的协作

     上篇文章我们介绍了synchronized关键字,使用它可以有效的解决我们多线程所带来的一些常见问题。例如:竞态条件,内存可见性等。并且,我们也说明了...

2279
来自专栏Vamei实验室

Python标准库11 多进程探索 (multiprocessing包)

在初步了解Python多进程之后,我们可以继续探索multiprocessing包中更加高级的工具。这些工具可以让我们更加便利地实现多进程。 进程池 进程池 (...

2115
来自专栏玄魂工作室

看代码学渗透 Day4 - strpos使用不当引发漏洞

--------------------------------------------------------------------------------...

2191
来自专栏增长技术

git对象模型

所有用来表示项目历史信息的文件,是通过一个40个字符的(40-digit)“对象名”来索引的,对象名看起来像这样:

1333
来自专栏java工会

Java 动态代理及 RPC 框架介绍

所谓动态代理,指的是语言提供的一种语法,能够将对对象中不同方法的调用重定向到一个统一的处理函数中来。 python重写__getattr__函数能够做到这一点,...

1201
来自专栏小樱的经验随笔

【批处理学习笔记】第二十课:扩充字符串

    “扩充”这个词汇来自于微软自己的翻译,意思就是对表示文件路径的字符串进行特殊的处理,具体功能罗列如下: ========================...

3336
来自专栏Ryan Miao

redis学习之二from github

大概敲了一遍基本命令,熟悉了redis的存储方式。现在开始进一步系统的学习。学习教程目前计划有三个,一个是github上的https://github.com/...

3426
来自专栏唐郑望的专栏

Go 语言之三驾马车

Go 语言的三个核心设计: interface 、goroutine 、 channel。

1.8K0
来自专栏决胜机器学习

设计模式专题(十七) ——单例模式

设计模式专题(十七)——单例模式 (原创内容,转载请注明来源,谢谢) 一、概述 单例模式(Singleton)保证一个类仅有一个实例,并提供一个访问它的全局访...

3777

扫码关注云+社区

领取腾讯云代金券