если я загружу данные из S3 в Redshift с помощью команды COPY, будет ли она следовать моему стилю dist и клавишам? - PullRequest
0 голосов
/ 17 декабря 2018

Справочная информация. В Redshift я хочу добавить ключ распространения в существующую таблицу, в которой есть столбец идентификаторов, как в этот вопрос .

Я смущен ответом на этот вопрос - я подумал, что для хранения данных в моей таблице в соответствии с определенным ключом dist, я должен ВСТАВИТЬ данные, я не могу просто скопировать или добавить изнераспределенная таблица.Отличается ли это при копировании с S3?

1 Ответ

0 голосов
/ 17 декабря 2018

Есть несколько интересных методов в связанных Вопросах!

Невозможно добавить ключ распространения в существующую таблицу. Вам необходимо создать новую таблицу, а затем скопировать данныев поперечнике.Это можно сделать с помощью INSERT INTO new-table SELECT * FROM old-table.

Когда данные загружаются в таблицу Amazon Redshift, они ВСЕГДА учитывают ключ распределения, поскольку DISTKEY определяет, в каком срезе хранятся данные.Используете ли вы COPY (что является предпочтительным) или INSERT, данные всегда будут распределяться в соответствии с DISTKEY.

. SORTKEY также будет использоваться при загрузке данных через COPY, но существующие данные не будут пересортированы.Например, если у вас есть столбец данных, уже загруженный в алфавитном порядке, то вновь загруженные строки будут добавлены к end существующих данных.Эти новые данные будут отсортированы, но столбец как целом не будет отсортирован.Используйте команду VACUUM для повторной сортировки всей таблицы.

По возможности следует использовать команду COPY для загрузки данных в таблицу Redshift.Это позволяет Redshift загружать данные параллельно, используя все узлы.Постарайтесь минимизировать объем данных, загружаемых с помощью INSERT - желательно загружать несколько строк с помощью этого метода.Старайтесь избегать INSERT отдельных строк, что очень неэффективно в Redshift по сравнению с массовой загрузкой.

...