1

У меня есть одна таблица DW, в которую я вставляю данные из промежуточной таблицы. Таблица DW содержит 5 столбцов, и я по существу проверяю, существует ли комбинация из всех 5 столбцов в таблице DW при выборе из промежуточной таблицы, если она существует, тогда я не делаю вставки (или обновления) и пропускаю эта строка (как она уже существует).Upsert in redshift

С другой стороны, если существует любая строка, которая существует без комбинации из 5 столбцов, тогда я делаю вставку.

Есть ли способ достичь этого, используя upsert. Поскольку я не выполняю операцию обновления здесь (вставьте только и удалите (который игнорирует вставку)). Я не уверен, будет ли upsert правильным выбором.

ответ

2

В Redshift нет такой вещи, как UPSERT, см. Их documentation. Если вы намерены загружать только строки в таблицу, которые еще не включены, то это должно сделать трюк:

insert into target_table 
    select 
     * 
    from 
     source_table 
    left join 
     target_table using(col1, col2, col3, col4, col5) 
    where 
     target_table.col1 is null 
; 
Смежные вопросы