我有一个 .sql 文件,其中可能包含几个存储过程的 DDL 定义、表、触发器、视图等的更改语句
它可能有这样的陈述:
- 创建过程/创建过程
- 改变程序/改变程序
- 丢弃过程/丢弃过程
- 创建表/触发器/视图
- 更改表/触发器/视图
- 拖放表/触发器/视图
- ETC
解析 .sql 文件并获取对象列表(Proc/Table/View 名称)以及对它们执行的操作(ALTER/CREATE/DROP)的最佳方法是什么?我想代替使用 Microsoft.Data.Schema.ScriptDom 或 ANTLR 或其他解析器之类的东西,最简单的方法是使用 RegEx。但不确定我应该写什么样的正则表达式来涵盖所有场景。
到目前为止,这个表达式能够匹配上述所有规则。但是我如何获得它前面的对象的名称。例如。它匹配
(create|alter|drop)\s+(procedure|proc|table|trigger|view|function|constraint)
如何获得 AdvisorGroups 的名称是我的问题。我的 RegEx 也不完美,因为它可能有 [dbo]。在它面前与否。它也可能只是 Alter table AdvisorGroups。我并不是要照顾所有的可能性。只是最低限度。
ALTER TABLE [dbo].[AdvisorGroups] 添加约束 [XXX]
-提前致谢