sql-server - Polybase 无法在 XLSX 目标上放置 WHERE 条件
问题描述
我的 T-SQL 查询中的WHERE
条件没有返回任何行,从 SQL 2019 polybase 到 .XLSX 文件
这是我创建 Polybase 的代码:
create master key encryption by password = 'Polybase2CSV';
create external data source myODBCxlsx with
(
LOCATION = 'odbc://localhost',
CONNECTION_OPTIONS = 'Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}; DBQ=F:\PolybaseSourceData\CustomerData.xlsx'
);
create external table CustomerData(
CUSTOMERID FLOAT(53),
CUSTOMERNAME Nvarchar(255),
DEPARTMENT Nvarchar(255)
) with (
LOCATION='[sheet1$]',
DATA_SOURCE=myODBCxlsx
);
此查询有效:
select * from customerData
但是,这不会:
select * from customerData where customername = 'Steve'
尽管有一位名叫 Steve 的客户,但该查询不返回任何行。
解决方案
如果您在创建外部数据源时未指定设置,则默认情况下会自动启用 PUSHDOWN。不幸的是,该特定驱动程序在启用 PUSHDOWN 的情况下无法工作,因此您将在简单查询时遇到错误。关闭 PUSHDOWN 将解决该问题。
外部数据源定义应如下所示:
create external data source myODBCxlsx with
(
LOCATION = 'odbc://localhost',
CONNECTION_OPTIONS = 'Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}; DBQ=F:\Files\CustomerData.xlsx',
PUSHDOWN=OFF
);
推荐阅读
- java - 来自 Firebase 的数据未显示在 RecyclerView 中
- php - 如果表单验证失败,则使用自定义请求类(laravel 5.8)通过输入重定向回来
- python - Flask 会话数据可以被用户(威胁参与者)更改吗?
- android - Android Studio 中的 Gradle 依赖项
- three.js - 我可以将 THREE.js 材料放在 gltf 模型上吗?
- git - 如何在 Mac 上为 Fork 配置 SSH 私钥?
- c++ - 合并排序和合并 C++
- php - Laravel 5.8 无法解析的依赖解析 [参数#0 [
$message ]] 在类异常中 - node.js - 无法从 MongoDB 检索文档
- java - 当我为多个构造函数注入参数时为什么会模棱两可?