2011-10-26 40 views
0

我有很多SQL腳本whith DDL和DML語句。需要正則表達式爲SQL對象名稱

我想分離並提取修改/創建/刪除的SQL對象。 。 一,即我有一個腳本:

create proc [dbo].test 
    as 
    print 1 
    go 

    drop table test_table 
    go 

    alter procedure dbo.test 
    as 
    print 2 

我不得不去創建/變更/下降SQL對象,E。 G。像下面這樣:

  • PROC dbo.test - 創建

  • 表TEST_TABLE - 降

  • PROC dbo.test - 改變

+0

我_assume_ SQL服務器? –

回答

0

我不知道從問題,你會在哪裏使用正則表達式,但試試這個:

/(create)(.*)|(drop)(.*)|(alter)(.*)/ 
0

要解析任意sql服務器存儲過程,最好用SQL解析器。嘗試用正則表達式解析任意SQL將等於編寫自己的解析器。

this pageSQL Parser,演示的幫助下產生導致這樣而這正是你所需要的:

sstMssqlCreateProcedure(proc: [dbo].test - create) 
sstMssqlPrint 
sstMssqlGo 
sstMssqlDropTabletable: test_table - drop 
sstMssqlGo 
sstMssqlAlterProcedure(proc: dbo.test - alter) 
sstMssqlPrint