David.Turing's blog

 

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

近日,朋友发送了一个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.

posted on 2006-03-16 17:40 david.turing 阅读(2299) 评论(5)  编辑  收藏 所属分类: 即学即用

评论

# re: [即学即用]正则语法的一次小应用——Emeditor 2006-03-17 10:33 shaw

你可以在命令行
perl -pi -e "s/('\d+-\d+-\d+')/to_date(\$1,'yyyy-mm-dd')/" filename
直接就替换完成了  回复  更多评论   

# re: [即学即用]正则语法的一次小应用——Emeditor 2006-03-20 10:59 ChuPaChuPs

editplus可以正则替换的呀  回复  更多评论   

# re: [即学即用]正则语法的一次小应用——Emeditor 2006-03-20 13:11 david.turing

en, shaw, 如果想在 ('2006-01-03', 3, '0')之前加一个自增的序号,
('0001','2006-01-03', 3, '0')
('0002','2006-01-03', 3, '0')
....
该如何做?  回复  更多评论   

# re: [即学即用]正则语法的一次小应用——Emeditor 2006-03-22 22:29 珂儿

呵呵,要是我就用EDITPLUS打开,搜索(' 替换为 (to_date('
然后搜索', 替换为 ','yyyy-mm-dd'),
不过这是你这三列的一个特殊情况.
至于多列的,用EDITPLUS的正则表达式照样可以实现吧?  回复  更多评论   

# re: [即学即用]正则语法的一次小应用——Emeditor 2006-03-29 13:25 shaw

如果要增加一个自增列,要用perl写一行是写不下的,看你的sql语法是oracle的,可以在数据库里做点手脚,建一个sequence,把sequence的值放置在第一列就可以了
CREATE SEQUENCE AUTOID
START WITH 1
INCREMENT BY 1

--用下面的文本代替那个自增序号的位置
TO_CHAR(AUTOID.NEXTVAL,'FM0000')  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

常用链接

留言簿(107)

我参与的团队

随笔分类(126)

随笔档案(155)

文章分类(9)

文章档案(19)

相册

搜索

积分与排名

最新随笔

最新评论

阅读排行榜

评论排行榜