2010-09-03 53 views
2

是否有人知道解構SQL語句的方法(選擇SQL語句,從每個SELECT中提取列,從每個FOR和每個JOIN中提取表,並從每個WHERE過濾條件。然後,我可以將這些數據放入BOM表中以創建查詢的「映射」,包括子查詢,使用VBA?我有一個將Teradata視圖映射到Access數據庫的項目。我想有一個自動化的方法來做到這一點。使用VBA訪問解析/解構SQL

+1

你想解析SQL嗎? – BIBD 2010-09-03 17:05:17

+0

我想要選擇一條SQL語句,從每個SELECT中提取列,從每個FOR和每個JOIN獲取表,並從每個WHERE過濾條件。然後,我可以將這些數據放入BOM表中以創建查詢的「映射」。 – DataZombies 2010-09-03 18:01:09

+0

如果將SELECT語句另存爲Access QueryDef,則可以通過查看QueryDef.Fields集合來識別輸出字段。不幸的是,這只是你想要的項目之一。我不知道如何得到其他人。 – HansUp 2010-09-03 19:27:32

回答

1

你想訪問一個SQL查詢的任意子結構(包括子SELECTs)?你需要的是一個完整的SQL語言解析器。

SQL是一個相當大且複雜的語言。可以手動編寫遞歸下降解析器來完成這個任務,但這是相當多的工作。用分析器生成器和SQL BNF來提供它可能會更好。

但是你想在VBA中這樣做的事實提示你不太可能找到這樣的解析器生成器。如果您希望通過適度的努力獲得合理的機會,可能需要調用另一種語言編碼的解析器生成器(例如C#),然後去查找預先存在的SQL解析器。