Существует два способа загрузки данных в Amazon Redshift.
Первый - с помощью команды COPY
, когда данные загружаются из файлов, хранящихся в Amazon S3.Каждый столбец в файле будет сопоставлен с одним столбцом в таблице, поэтому вы не можете «вычислить» столбец во время этого процесса.
Второй - с помощью команды INSERT
.Это не очень эффективно при использовании с Amazon Redshift и предпочтительно используется для вставки объемных строк, а не по одной строке за раз.
Обычной практикой является загрузка данных в промежуточную таблицу, манипулирование ими по желанию,затем снова вставьте его в целевую таблицу.
Возможно, вы даже сможете сделать что-то необычное с Redshift Spectrum, где вы можете выбрать SELECT непосредственно из файлов в S3 и вставить в таблицу.Это также позволит вам включить термины, например:
INSERT INTO normal-table
SELECT max(d2,d3), d2, d3 FROM spectrum-table
Альтернативой является загрузка данных, а затем использование команды UPDATE
для установки значения дополнительного столбца на основе существующих столбцов..
Обновление:
Похоже, что использование оператора UPDATE
в Amazon Redshift (и, по сути, в any столбчатая база данных) не очень хорошая идея.Это потому, что каждый столбец хранится отдельно, но в том же порядке.Обновление одного значения требует перезаписи всей строки в конце пространства хранения, а не обновления на месте.Таким образом, вам потребуется VACUUM
база данных после таких обновлений.