如何将word文档中的表格数据快速转化成sql语句添加到数据库中?——正则表达式

当我们得到word文档的数据的时候,想要在数据库建成相应的表,原始人(曾经的我)选择一条条ctrl C V 复制粘贴,耗时且繁琐,毫无技术性(不高级)。 java情报局研究中心的组长告诉我,使用 idea正则表达式全局替换,yyds! (以上为废话引用


当原始人看到表格数据,头大且头疼:这得复制到ctrl键都出油了

 想要把表格数据转换成sql语句,步骤如下

1. 在IDEA中创建文本文件

2. 将表格复制到文本文件中

 3. 快捷键 ctrl + R 替换功能

4. 打开正则表达式功能

 

 5. 输入替换前的表达式和替换后的表达式

        首先,每行数据加   ().  

替换前表达式

^(.+)$

^ 匹配字符串的开始   $ 匹配字符串的结束   . 匹配除换行符\n以外的任意字符   

( ) 是为了提取匹配的字符串   +  匹配前面的字符、表达式至少一次

替换后表达式

($1),

$1 代表第一个参数   (), 加在第一个参数上    一行为一个参数

 接下来,将每一行的字段加单引号

替换前表达式

([^\s,()]+)

 \s 匹配任意的空白符  [ ] 匹配[ ] 内的任意一个字符( []是定义匹配的字符范围

替换后表达式

'$1',

 最后,将生日转换成yyyy-MM-dd

替换前表达式

(\d+)/(\d+)/(\d+)

\d 匹配数字  +  匹配前面的字符、表达式至少一次    ()  为了提取匹配字符串的

替换后表达式

$3-$1-$2

替换中$x代表第x个单元,如 $1表示第1个单元;

 最后 加上mysql格式

INSERT INTO student(stuId,stuName,sex,birthday,nation,nativePlace,majorId) VALUES

('07042219',	'黄耀',	'男',	'1989-01-02',	'汉',	'黑龙江省牡丹江市',	'0403'),
('06041138',	'华美',	'女',	'1987-11-09',	'汉',	'河北省保定市',	'0403'),
('07045120',	'刘权利',	'男',	'1989-10-20',	'回',	'湖北省武汉市',	'0403'),
('08055117',	'王燕',	'女',	'1990-08-02',	'回',	'河南省安阳市',	'0501'),
('08045142',	'郝明星',	'女',	'1989-11-27',	'满',	'辽宁省大连市',	'0403'),
('08053101',	'高猛',	'男',	'1990-02-03',	'汉',	'湖北生黄石市',	'0501'),
('08053124',	'多桑',	'男',	'1988-10-26',	'藏',	'西藏',	'0501'),
('08053160',	'郭政强',	'男',	'1989-06-10',	'土家',	'湖南省吉首',	'0501'),
('08053116',	'陆敏',	'女',	'1990-03-18',	'汉',	'广东省东莞',	'0501'),
('08053131',	'林惠萍',	'女',	'1989-12-04',	'壮',	'广西省柳州市',	'0501'),
('07093305',	'郑家谋',	'男',	'1988-03-24',	'汉',	'上海市',	'0904'),
('07093342',	'罗家艳',	'女',	'1988-05-16',	'满',	'北京市',	'0904'),
('07093325',	'史玉磊',	'男',	'1988-09-11',	'汉',	'湖北省孝感市',	'0904'),
('07093317',	'凌晨',	'女',	'1988-06-28',	'汉',	'浙江省温州',	'0904'),
('08041136',	'徐栋梁',	'男',	'1989-12-20',	'回',	'陕西咸阳',	'0403'),
('08041127',	'巴朗',	'男',	'1989-09-25',	'蒙古',	'内蒙古',	'0403');

完成!

回顾正则表达式规则

\d 匹配数字   ^ 匹配字符串的开始   $ 匹配字符串的结束  \s 匹配任意的空白符   

 (\s*)表示连续空格的字符串。     

{}一般用来表示匹配的长度    \s{1,3}表示匹配一到三个空格。

(0-9) 匹配 '0-9′ 本身  [0-9]+ 匹配数字 +不可以为空

[0-9]{0,9} 表示长度为 0 到 9 的数字字符串。

 

正则中(xx)代表此处是一个单元;

替换中$x代表第x个单元,如 $1表示第1个单元;

/l$x:小写第x个单元,如 /l$1表示小写第1个单元的首字母;

  \l 第一个字母转小写 \L 从第一个字母到最后转小写

  \u 第一个字母转大写 \U 从第一个到最后全部转大写

/u$x:大写第x个单元,如 /u$2表示大写第2个单元的首字母;

 

如有错误或有更好的办法,欢迎评论!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值