[即学即用]正则语法的一次小应用——Emeditor

本文介绍了一种使用Emditor的正则替换功能快速修改大量SQL插入语句中的日期格式的方法,从Varchar类型转换为Date类型,适用于面对大规模数据插入任务时提高效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

近日,朋友发送了一个SQL文件给我,他的日期在数据库中是Varchar类型,而我是date类型,
该文件有2万个Insert语句,类似
insert into T_ZX_HOLIDAY (CDATE, CWEEK, IS_HOLIDAY)
values ('2006-01-01', 1, '1');
insert into T_ZX_HOLIDAY (CDATE, CWEEK, IS_HOLIDAY)
values ('2006-01-02', 2, '0');
insert into T_ZX_HOLIDAY (CDATE, CWEEK, IS_HOLIDAY)
values ('2006-01-03', 3, '0');
.......

我不得不将该插入语句改成
insert into T_ZX_HOLIDAY (CDATE, CWEEK, IS_HOLIDAY)
values (to_date('2006-01-01','yyyy-mm-dd'), 1, '1');
insert into T_ZX_HOLIDAY (CDATE, CWEEK, IS_HOLIDAY)
values (to_date('2006-01-02','yyyy-mm-dd'), 2, '0');
insert into T_ZX_HOLIDAY (CDATE, CWEEK, IS_HOLIDAY)
values (to_date('2006-01-03','yyyy-mm-dd'), 3, '0');
.....

非鱼说用宏和UltraEdit可以做到,但是语句不是同一行的:(
GTM说写个Java类
replaceAll.("value ('.*?',","value (todate'*?'"))
也可以完成,但我觉得这样做仍然麻烦。

我查了一下Emeditor语法及参考了
http://bbs.et8.net/bbs/showthread.php?t=652159

用Emditor的正则替换功能(Perl语法)
查找:'\d\d\d\d-\d\d-\d\d'
替换为:todate(\0,'yyyy-mm-dd')

work done!

\0表示匹配上一次的匹配结果
如果你直接用Perl命令,(这些东西需要转义,多了就麻烦,我还是比较喜欢Emditor/Editplus.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值