我正在创建一些SQL表和视图。其中大多数都包含对其他人的依赖。我想检查这些依赖项并检索必须在其中创建表或视图的时间顺序...
所以,基本上,我想要做的是从Java中的SQL脚本中提取所有View或Table名称。我正在使用模式匹配器和正则表达式。到目前为止工作,但我找不到正确的正则表达式。
看看这个示例sql脚本:
Select * from view_1; select abc, bda from view_2, view_3 v8, view_4 where whatever;
select * from view_5 join view_6 where whatever;
select v6.abc, v7.bda from view_7 v6 join view_8 v7;
select abc from
view9
,
view10,
view11;
select abcd from view12 v
, view13 s;
我想要提取的是一个包含视图1到13的列表。 (view1,view2,...,view13)
我已经尝试了
(?<=(from|join))\s+\w+((\s+\w+)?)(\s*,\s*\w+(\s+\w+)?)*
但是没有按预期工作。
感谢您的帮助
Buntspecht
答案 0 :(得分:0)
我同意Henrique的观点,即regex可能不是这里的方式(除非你可以假设简单的SQL语句)。也许使用SQL解析器。 This question询问Java的SQL解析器。我查看了一个,发现example找到了select语句中引用的表。