【问题标题】:Create External Table Error while converting VARCHAR to Datetime and VARCHAR to Decimal将 VARCHAR 转换为 Datetime 并将 VARCHAR 转换为 Decimal 时创建外部表错误
【发布时间】: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


【解决方案1】:

至少有一个日期不是d/m/y 格式,一位小数太大,或者一行或多行的逗号过多或过少导致格式无效。

请注意,导致问题的行可能不方便地位于屏幕截图中捕获的三行中。

【讨论】:

    猜你喜欢
    • 2019-01-22
    • 2017-11-29
    • 2016-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-09
    • 2012-08-16
    • 2014-04-12
    相关资源
    最近更新 更多