【发布时间】:2021-11-04 18:48:43
【问题描述】:
我尝试从 CSV 文件(位于云存储中)创建外部表,在将 Varchar 转换为 datetime 并将 Varchar 转换为十进制时出错。有人可以帮我解决这个问题吗
错误信息
HdfsBridge::recordReaderFillBuffer - 填充记录读取器缓冲区时遇到意外错误:HadoopSqlException:将数据类型 VARCHAR 转换为 DECIMAL 时出错。
CREATE EXTERNAL TABLE [ext].[Load_History_test]
( [Table_Name] [varchar](100) NULL,
[Loaded_On] [datetime] NULL,
[Transferred_Count] [decimal](30) NULL,
[Transferred_Volume_MB] [decimal](30) NULL,
[Load Duration] [time] NULL,
[Throughput_Records] [decimal](30) NULL,
[Throughput_Volume_KB_sec)] [decimal](30) NULL
)
WITH (DATA_SOURCE = [ADLS_External_Landing],LOCATION = N'/refdata/replicate/load_history',FILE_FORMAT = [CSVFileFormatwithHeaderloadhistory],REJECT_TYPE = VALUE,REJECT_VALUE = 0)
GO
CREATE EXTERNAL FILE FORMAT [CSVFileFormatwithHeaderloadhistory] WITH (FORMAT_TYPE = DELIMITEDTEXT, FORMAT_OPTIONS (FIELD_TERMINATOR = N',',
STRING_DELIMITER = N'0x22',
DATE_FORMAT = N'dd/MM/yyyy HH:mm:ss',
FIRST_ROW = 2,
USE_TYPE_DEFAULT = FALSE))
GO
【问题讨论】:
-
您确定所有日期都在
d/m/y中吗?您确定没有任何行包含无效日期或无效小数或太多逗号或...请注意,导致问题的行可能不方便地位于屏幕截图中捕获的三行中。 -
谢谢亚伦,是的,有几行格式不合适。解决这个已解决的整个问题,谢谢
-
@user2703679,人们检查线程并浪费时间,因为您已经找到了解决方案。也许 Aaron 可以写他的评论作为你应该回答的答案,以便标记答案以关闭线程
标签: sql-server tsql azure-synapse