簡體   English   中英

如何將 533 列數據加載到雪花表中?

[英]How to load 533 columns of data into snowflake table?

我們有一個包含 533 列的表,其中包含許多必須移動到雪花的 LOB 列。 由於我們的源轉換系統在一項工作中管理 533 列存在問題。 我們已將列拆分為 2 個作業。 第一個作業將插入 283 列,第二個作業需要更新剩余的列。

我們對這兩個作業分別使用一個復制命令和 upsert 命令。

復制命令

copy into "ADIUATPERF"."APLHSTRO"."FNMA1004_APPR_DEMO" (283 columns) from @"ADIUATPERF"."APLHSTRO".fnma_talend_poc/jos/outformatted.csv
--file_format = (format_name = '"ADIUATPERF"."APLHSTRO".CSV_DQ_HDR0_NO_ESC_CARET');
FILE_FORMAT = (DATE_FORMAT='dd-mm-yyyy', TIMESTAMP_FORMAT='dd-mm-yyyy',TYPE=CSV, ESCAPE_UNENCLOSED_FIELD = NONE,
SKIP_HEADER=1, field_delimiter ='|', RECORD_DELIMITER = '\\n', FIELD_OPTIONALLY_ENCLOSED_BY = '"',
               NULL_IF = ('')) PATTERN='' on_error = 'CONTINUE',FORCE=true;

插入命令

MERGE INTO db.schema._table as target 
 USING
(SELECT t.$1
from @"ADIUATPERF"."APLHSTRO".fnma_talend_poc/jos/fnma1004_appr.csv 
--file_format = (format_name = '"ADIUATPERF"."APLHSTRO".CSV_DQ_HDR0_NO_ESC_CARET');
(FILE_FORMAT =>'CSV', ESCAPE_UNENCLOSED_FIELD => NONE,
SKIP_HEADER=>1, field_delimiter =>'|', RECORD_DELIMITER => '\\n', FIELD_OPTIONALLY_ENCLOSED_BY => '"',
               NULL_IF => (''))

) source ON target.document_id = source.document_id
WHEN MATCHED THEN
--update lst_updated
UPDATE SET <columns>=<values>;

我想知道我們是否還有其他選擇?

我建議您首先將兩個拆分文件運行COPY INTO到臨時/臨時表中。 然后使用document_id上這兩個表之間的 JOIN 執行單個 CTAS 語句。 不要從平面文件中MERGE 如果您願意,您可以選擇將第二個臨時表上的MERGE運行到第一個表(不是臨時表)中,但我認為來自 2 個“半”表的直接 CTAS 對您來說可能更快。

暫無
暫無

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

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