使用VBA-Access解析/解构SQL

时间:2010-09-03 15:30:48

标签: sql parsing ms-access teradata

有没有人知道解构SQL语句的方法(从选择SQL语句中提取,从每个SELECT中提取列,从每个FOR和每个JOIN中提取表,并从每个WHERE中过滤条件。然后我可以将这些数据放入BOM表创建查询的“地图”),包括子查询,使用VBA?我有一个项目将Teradata视图映射到Access DB。我想有一个自动方法来做到这一点。

1 个答案:

答案 0 :(得分:1)

您想要访问SQL查询的任意子结构(包含子SELECT)吗?你需要的是一个感兴趣的SQL方言的完整解析器。

SQL是一种非常庞大而复杂的语言。可以手动编写递归下降解析器来执行此操作,但这是相当多的工作。使用解析器生成器和SQL BNF来提供它可能会更好。

但是你想在VBA中这样做的事实提示你不太可能找到这样的解析器生成器。如果你想有一个合理的机会以适度的努力做到这一点,你可能不得不调用另一个langauge(例如,C#)编码的解析器生成器,并找到一个预先存在的SQL解析器。