在 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 中加入更新

在 Oracle SQL SELECT 语句中加入条件

在 oracle sql developer 中加入查询快,在 odp.net 中超慢

如何在sql的查询结果中加入序号

如何在 SnowFlake 中加入 query_id 和 METADATA$ROW_ID

Freebie - Utility Form: Generate Excel Report From SQL Query In Oracle Forms 6i And 11g