sql-server - Polybase - 将数据类型 VARCHAR 转换为 DATETIME 时出错
问题描述
我正在尝试为存储在 Azure 存储中的 CSV 文件创建一个外部表。
CSV 数据如下所示:-
日期 | 铁路时期 | 公历年 | 日历月 | 日历月份名称 | 财政年度 | 会计期间 | 平日 | 工作日编号 |
---|---|---|---|---|---|---|---|---|
26/04/2021 | 2201 | 2021 | 4 | 四月 | 2022 | 第一期 | 周一 | 1 |
27/04/2021 | 2201 | 2021 | 4 | 四月 | 2022 | 第一期 | 周二 | 2 |
28/04/2021 | 2201 | 2021 | 4 | 四月 | 2022 | 第一期 | 周三 | 3 |
29/04/2021 | 2201 | 2021 | 4 | 四月 | 2022 | 第一期 | 周四 | 4 |
2021 年 4 月 30 日 | 2201 | 2021 | 4 | 四月 | 2022 | 第一期 | 星期五 | 5 |
2021 年 1 月 5 日 | 2201 | 2021 | 5 | 可能 | 2022 | 第 2 期 | 周六 | 6 |
2021 年 2 月 5 日 | 2202 | 2021 | 5 | 可能 | 2022 | 第 2 期 | 星期日 | 7 |
2021 年 3 月 5 日 | 2202 | 2021 | 5 | 可能 | 2022 | 第 2 期 | 周一 | 1 |
2021 年 4 月 5 日 | 2202 | 2021 | 5 | 可能 | 2022 | 第 2 期 | 周二 | 2 |
我使用以下代码创建了外部文件格式
CREATE EXTERNAL FILE FORMAT csvFile
WITH (
FORMAT_TYPE = DELIMITEDTEXT,
FORMAT_OPTIONS (
FIELD_TERMINATOR = ',',
STRING_DELIMITER = '"',
FIRST_ROW = 2,
USE_TYPE_DEFAULT = TRUE,
ENCODING = 'UTF8' )
);
和外部表如下
CREATE EXTERNAL TABLE ext.DateDimension(
[Date] DATE,
[Rail Period] INT,
[Calendar Year] INT,
[Calendar Month] INT,
[Calendar Month Name] VARCHAR(9),
[Fiscal Year] INT,
[Fiscal Period] VARCHAR(9),
[Weekday] VARCHAR(9),
[Weekday Number] INT)
WITH(
DATA_SOURCE = [tfwpbstore_ADLSG2],
LOCATION = '/Generic Datasets/Date Dimension.csv',
FILE_FORMAT = csvFile);
但是,当我尝试从外部表中选择时,它给了我以下错误
消息 107090,级别 16,状态 1,第 1 行 HdfsBridge::recordReaderFillBuffer - 填充记录读取器缓冲区时遇到意外错误:HadoopSqlException:将数据类型 VARCHAR 转换为 DATETIME 时出错。
而且我不太确定出了什么问题。如果有人可以提供帮助,我将不胜感激。
解决方案
正如上面的评论中提到的,我需要定义文件格式语句中使用的日期格式,如下所示:
CREATE EXTERNAL FILE FORMAT csvFile_ddMMyyyy_fr2
WITH (
FORMAT_TYPE = DELIMITEDTEXT,
FORMAT_OPTIONS (
FIELD_TERMINATOR = ',',
STRING_DELIMITER = '"',
DATE_FORMAT = 'dd/MM/yyyy',
FIRST_ROW = 2,
USE_TYPE_DEFAULT = TRUE,
ENCODING = 'UTF8' )
);
推荐阅读
- python - curl cmd 命令返回内部服务器错误
- javascript - 在多个链接上绑定 onlick 事件
- node.js - 弹性 APM HTTP 错误 (404):找不到 404 页面
- javascript - Node.js中如何根据特定条件对数组中的对象进行分组,使它们不是同一个对象?
- numpy - 从 anaconda 环境运行 python 和 numpy 1.18 的 Gitlab CI 运行程序
- json - 使用 PostgreSQL 从 json 中提取数据的问题
- reactjs - 如何使用 aws cognito 联合身份处理重定向
- anylogic - 未解决:从具有动态事件的等待块中释放给定数量的托盘
- java - 如何将地图转换为 DTO
- java - 生成在终端中写入内存的随机代码