在 Oracle SQL Query 中加入(INNER JOIN)本地 Excel 表 - VBA
Posted
技术标签:
【中文标题】在 Oracle SQL Query 中加入(INNER JOIN)本地 Excel 表 - VBA【英文标题】:Join (INNER JOIN) local Excel table in Oracle SQL Query - VBA 【发布时间】:2016-09-29 23:31:04 【问题描述】:我在通过 Excel VBA 在远程 Oracle SQL Server 上执行查询时遇到问题尝试在同一查询中使用 Excel 文件表中的 本地表执行 INNER JOIN 。 示例:
带有本地表["LTE_Cells$LTE_Cells_Tmp"]
的Excel工作表:
Sheet "LTE_Cells"
Oracle SQL 查询
SELECT a.STARTDATE, a.ENODEB, a.EUTRANCELLFDD, (a.COUNTER_1/8/1024)+
a.COUNTER2/8/1024) AS Total_Total_Traffic_TB FROM »»»LOCAL_EXCEL_TABLE««««
INNER JOIN REMOTE_DATABASE.LTE_KPI_1 a ON
((»»»LOCAL_EXCEL_TABLE««««.EUTRANCELLFDD =
REMOTE_DATABASE.LTE_KPI_1.EUTRANCELLFDD) AND
(»»»LOCAL_EXCEL_TABLE««««.ENODEB = REMOTE_DATABASE.LTE_KPI_1.ENODEB)) WHERE
(((REMOTE_DATABASE.LTE_KPI_1.STARTDATE)>=sysdate-3));`
提前感谢您的帮助!
【问题讨论】:
【参考方案1】:这并不能直接回答您的问题,我可能对此很感兴趣,但我不知道 Excel 或 Oracle 是否明确处理您要完成的任务。
但是,MS Access 将开箱即用。简短的回答:我认为您在执行此任务时使用了错误的工具。您正在使用众所周知的锤子将木板锯成两半。将电子表格和 Oracle 表链接为 Excel 中的链接对象,您的查询应该很容易。
更长的答案:虽然 Access 可以简单轻松地完成此操作,但它可以并且可能会在 DBMS 上留下破坏路径。具体来说,您可能会破坏 Oracle 中的共享池,因为 Access 将为 Excel 中的每一行发出一个查询(使用文字,不少于)。对于 1000 行,这可能无关紧要,但如果您要在非常大的数据集上执行此操作,您将成为 DBA 的快速敌人。
扩展答案:确实,最好的方法是将这些 Excel 电子表格的内容加载到 Oracle 表中,让 DBMS 完成繁重的工作。这是 RDBMS 的生计。
【讨论】:
以上是关于在 Oracle SQL Query 中加入(INNER JOIN)本地 Excel 表 - VBA的主要内容,如果未能解决你的问题,请参考以下文章
在 oracle sql developer 中加入查询快,在 odp.net 中超慢
如何在 SnowFlake 中加入 query_id 和 METADATA$ROW_ID
Freebie - Utility Form: Generate Excel Report From SQL Query In Oracle Forms 6i And 11g