簡體   English   中英

雪花表不接受日期字段中的 null 值

[英]Snowflake table is not accepting null values in date field

我在雪花中有一張桌子,我正在使用它執行批量加載。 表中的一列是日期,但在 sql 服務器上的源表中,日期列中有 null 個值。

數據流如下:

sql_server-->S3 桶-->snowflake_table

我能夠在 EMR 中執行 sqoop 作業,但無法將數據加載到雪花表中,因為它不接受日期列中的 null 值。

錯誤是:

Date '' is not recognized File 'schema_name/table_name/file1', line 2, character 18 Row 2, 
column "table_name"["column_name":5] If you would like to continue loading when an error is 
encountered, use other values such as 'SKIP_FILE' or 'CONTINUE' for the ON_ERROR option.

誰能幫忙,我想念的地方

該錯誤表明日期未作為空值到達。 相反,它們作為空白字符串到達。 您可以通過幾種不同的方式解決這個問題。

最干凈的方法是在該列的 COPY INTO 語句中使用 TRY_TO_DATE function。 當嘗試將空白字符串轉換為日期時,此 function 將返回數據庫 null:

https://docs.snowflake.com/en/sql-reference/functions/try_to_date.html#try-to-date

使用以下命令,您可以看到階段文件中的值:

select t.$1, t.$2 from @mystage1 (file_format => myformat) t;

根據數據,您可以更改復制命令,如下所示:

COPY INTO my_table(col1, col2, col3) from (select $1, $2, try_to_date($3) from @mystage1) 
file_format=(type = csv FIELD_DELIMITER = '\u00EA' SKIP_HEADER = 1 NULL_IF = ('') ERROR_ON_COLUMN_COUNT_MISMATCH = false EMPTY_FIELD_AS_NULL = TRUE)  
    on_error='continue'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM