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語法及參考了

          work done!

          \0表示匹配上一次的匹配結果
          如果你直接用Perl命令,(這些東西需要轉義,多了就麻煩,我還是比較喜歡Emditor/Editplus.

          posted on 2006-03-16 17:40 david.turing 閱讀(2558) 評論(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')  回復  更多評論   

          導航

          統計

          常用鏈接

          留言簿(110)

          我參與的團隊

          隨筆分類(126)

          隨筆檔案(155)

          文章分類(9)

          文章檔案(19)

          相冊

          搜索

          積分與排名

          最新隨筆

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 河西区| 界首市| 清水县| 昆山市| 曲水县| 信丰县| 田林县| 南木林县| 东辽县| 凌云县| 麻江县| 徐水县| 双江| 麦盖提县| 昂仁县| 盐源县| 青海省| 久治县| 邓州市| 济阳县| 浑源县| 贵德县| 资兴市| 江阴市| 油尖旺区| 萨嘎县| 鸡西市| 庆阳市| 集贤县| 麟游县| 阜平县| 缙云县| 双牌县| 文山县| 玉屏| 河曲县| 嘉定区| 岱山县| 余干县| 阜阳市| 辽源市|