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 閱讀(2546) 評論(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)

          相冊

          搜索

          積分與排名

          最新隨筆

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 息烽县| 美姑县| 陇川县| 观塘区| 兰坪| 古交市| 宾阳县| 凌海市| 攀枝花市| 油尖旺区| 永嘉县| 光泽县| 泰宁县| 五指山市| 肇州县| 闵行区| 博野县| 鸡泽县| 积石山| 杂多县| 敦煌市| 红安县| 缙云县| 轮台县| 蒲江县| 青浦区| 邮箱| 锦屏县| 准格尔旗| 宜川县| 灵宝市| 买车| 枣阳市| 罗城| 林口县| 广安市| 砚山县| 呼图壁县| 出国| 永年县| 喀喇|