David.Turing's blog

           

          [即學(xué)即用]正則語法的一次小應(yīng)用——Emeditor

          近日,朋友發(fā)送了一個(gè)SQL文件給我,他的日期在數(shù)據(jù)庫中是Varchar類型,而我是date類型,
          該文件有2萬個(gè)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說寫個(gè)Java類
          replaceAll.("value ('.*?',","value (todate'*?'"))
          也可以完成,但我覺得這樣做仍然麻煩。

          我查了一下Emeditor語法及參考了

          work done!

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

          posted on 2006-03-16 17:40 david.turing 閱讀(2546) 評(píng)論(5)  編輯  收藏 所屬分類: 即學(xué)即用

          評(píng)論

          # re: [即學(xué)即用]正則語法的一次小應(yīng)用——Emeditor 2006-03-17 10:33 shaw

          你可以在命令行
          perl -pi -e "s/('\d+-\d+-\d+')/to_date(\$1,'yyyy-mm-dd')/" filename
          直接就替換完成了  回復(fù)  更多評(píng)論   

          # re: [即學(xué)即用]正則語法的一次小應(yīng)用——Emeditor 2006-03-20 10:59 ChuPaChuPs

          editplus可以正則替換的呀  回復(fù)  更多評(píng)論   

          # re: [即學(xué)即用]正則語法的一次小應(yīng)用——Emeditor 2006-03-20 13:11 david.turing

          en, shaw, 如果想在 ('2006-01-03', 3, '0')之前加一個(gè)自增的序號(hào),
          ('0001','2006-01-03', 3, '0')
          ('0002','2006-01-03', 3, '0')
          ....
          該如何做?  回復(fù)  更多評(píng)論   

          # re: [即學(xué)即用]正則語法的一次小應(yīng)用——Emeditor 2006-03-22 22:29 珂兒

          呵呵,要是我就用EDITPLUS打開,搜索(' 替換為 (to_date('
          然后搜索', 替換為 ','yyyy-mm-dd'),
          不過這是你這三列的一個(gè)特殊情況.
          至于多列的,用EDITPLUS的正則表達(dá)式照樣可以實(shí)現(xiàn)吧?  回復(fù)  更多評(píng)論   

          # re: [即學(xué)即用]正則語法的一次小應(yīng)用——Emeditor 2006-03-29 13:25 shaw

          如果要增加一個(gè)自增列,要用perl寫一行是寫不下的,看你的sql語法是oracle的,可以在數(shù)據(jù)庫里做點(diǎn)手腳,建一個(gè)sequence,把sequence的值放置在第一列就可以了
          CREATE SEQUENCE AUTOID
          START WITH 1
          INCREMENT BY 1

          --用下面的文本代替那個(gè)自增序號(hào)的位置
          TO_CHAR(AUTOID.NEXTVAL,'FM0000')  回復(fù)  更多評(píng)論   

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(110)

          我參與的團(tuán)隊(duì)

          隨筆分類(126)

          隨筆檔案(155)

          文章分類(9)

          文章檔案(19)

          相冊(cè)

          搜索

          積分與排名

          最新隨筆

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 商洛市| 监利县| 陵川县| 惠安县| 明水县| 桦南县| 陵水| 乌苏市| 天等县| 清徐县| 柳江县| 灵寿县| 阿拉善盟| 襄樊市| 怀集县| 博野县| 宜都市| 嵊州市| 绥阳县| 玛多县| 丘北县| 福海县| 资阳市| 岳阳市| 博兴县| 建宁县| 繁昌县| 香河县| 台中市| 綦江县| 梨树县| 昌江| 镇江市| 准格尔旗| 腾冲县| 辽宁省| 大化| 湖口县| 全州县| 射洪县| 太仆寺旗|