Excel ODBC - SQL 查询

Posted

技术标签:

【中文标题】Excel ODBC - SQL 查询【英文标题】:Excel OBDC - SQL Query 【发布时间】:2017-06-22 13:51:27 【问题描述】:

我正在尝试使用 Excel 通过 ODBC 连接从大型 Oracle 数据仓库中提取数据。我有一个使用 Access 中的编辑器工作的查询。我尝试使用 Power Query 和 Microsoft SQL 来使用此查询将这些数据导入 Excel,但出现错误。

因此:

    从 Excel 执行的 SQL 是否需要使用不同的语法?不应该还是甲骨文吗? 如何使用这个预先编写的查询来 ping 数据仓库并获取我需要的内容?

这是我到目前为止的 SQL。我不得不更改一些表名...抱歉,如果这让它变得很奇怪。

【问题讨论】:

我认为您正在寻找“通过查询”设置。不确定它在您的设置中的位置。 未选择传递查询选项(在 Access 中)。原始查询是否需要编写为 PTQ,然后复制到 Excel?目标是完全避免 Access,只使用 Excel 从数据仓库中查询我们需要的内容。我知道 VBA 代码可用于执行 SQL 查询,但我的 VBA 很差,所以我想避免这种情况(至少现在) 这取决于您使用的驱动程序。分享您的疑问 - 我认为这会帮助其他人帮助您 刚刚做了。谢谢你的建议 SQL 没有 VAL 函数。那是唯一的访问。 【参考方案1】:

您发布的 SQL 使用了特定于 Access 的函数。如果直接针对 Oracle 运行,那不是有效的 SQL 查询。如果您在 Access 中有一堆链接表,那将允许这样做。

Excel 中的 ODBC 数据源连接的工作方式不同。 ODBC 直接在数据源上执行查询。它首先进行一些验证,并支持目的地支持的 SQL 语言的有限子集。子集中包含的内容部分取决于为连接选择的驱动程序。

因此,您要做的是使用一种工具,让您可以直接在 Oracle 环境中构建查询,例如 Quest Toad 或 Oracle SQL Developer。一旦查询在那里工作,将它移植到 Excel 应该会更容易。

我喜欢做的一件事是将我的查询放入数据库的视图中。然后我可以在创建 Excel 连接时从视图中选择所有内容。

还值得将您指向“我的数据源”文件夹。当您第一次在 Excel 中设置 ODBC 连接时,默认情况下,该连接保存在 Windows 中名为“我的数据源”的文件夹中,该文件夹位于您的用户配置文件文件夹下。例如:C:\Users\UserName\My Data Sources\Data Source Name.odc

您可以在任何文本编辑器中打开这些*.odc 文件,并且您应该可以在此处手动编辑 SQL。特别是寻找<odc:CommandText> 元素。通过这种方式,您可以预先构建一个简单的查询,然后在您喜欢的环境中改进 SQL 命令,并轻松地将更新的 SQL 移动到现有的 ODBC 连接。

【讨论】:

感谢 Joel Coehoorn 的回答。它确实解决了问题。

以上是关于Excel ODBC - SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章

通过 ODBC 将 pandas 输出连接到 Excel 工作表

Excel:使用单元格值作为 SQL 查询的参数

将 Excel 数据“日期范围”传递给 SQL 查询

在 R 中执行用 Excel 单元格编写的 SQL 查询

刷新每个查询所用的 Excel ODBC 数据连接查询时间

使用 VBA 在 Excel 中的 SQL 表上使用参数化查询