Как загрузить 533 столбца данных в таблицу снежинок?

У нас есть таблица с 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;

Команда Upsert

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>;

Я хотел бы знать, есть ли у нас другой вариант?

1 ответ

Решение

Я бы порекомендовал вам запустить COPY INTOдля обоих ваших файлов, разделенных на временные / переходные таблицы, сначала. А затем выполните один оператор CTAS, используя JOIN между этими двумя таблицами наdocument_id. Не надоMERGEиз плоского файла. При желании вы можете запуститьMERGE из 2-й таблицы temp в первую таблицу (не temp), если хотите, но я думаю, что прямой CTAS из 2-х "половинных" таблиц может быть для вас быстрее.